%!PS-Adobe-2.0
%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
%%Title: manual.dvi
%%Pages: 136
%%PageOrder: Ascend
%%BoundingBox: 0 0 595 842
%%DocumentFonts: CMR12 CMR17 CMR10 CMTI10 CMBX12 CMBX10 CMTT10 CMR7
%%+ CMBXTI10 CMSY10 CMTT12 CMSY7 CMMI10 CMMI7
%%DocumentPaperSizes: a4
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips manual.dvi
%DVIPSParameters: dpi=1200
%DVIPSSource:  TeX output 2008.01.10:1827
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end

%%EndProcSet
%%BeginProcSet: texps.pro 0 0
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end

%%EndProcSet
%%BeginProcSet: special.pro 0 0
%!
TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
{userdict/md get type/dicttype eq{userdict begin md length 10 add md
maxlength ge{/md md dup length 20 add dict copy def}if end md begin
/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
save N userdict maxlength dict begin/magscale true def normalscale
currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix}N end

%%EndProcSet
%%BeginFont: CMMI7
%!PS-AdobeFont-1.1: CMMI7 1.100
%%CreationDate: 1996 Jul 23 07:53:53
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.100) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMMI7) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
end readonly def
/FontName /CMMI7 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 105 /i put
dup 110 /n put
readonly def
/FontBBox{0 -250 1171 750}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F
C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B
B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868
DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811
4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3
FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB
76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5
123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770
012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6
A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413
44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC
4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050
01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608
D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3
914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05
261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615
24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2
A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663
9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C
889787CDC0C51802EA1E0C63E6DE20980D3DD206F05360F78906FF0132D5F4EB
8B2384EBF991DF6A99488477067F4A8C0FCE0CDE8FDEDE80EE0E087271DCB088
9A0B2ED6FCA29399FF34CAAD2F4ADE9979E7B1F46EBCF7EAAA9C1BD7D5A7C901
C4F56769AB3279B88B453CAD4F980D5776CBAFA7A5E45EA940A80018FF8A1060
649DBA8BECEB5FB18938F7E69FDCC37A64DA9FE7336ED1BBE2609B8752409617
6D0C56A0CA33A91D7D34AC34703DD12E031D0EEDDC326DB3C7D69E2EEEF2103E
0207D54FCA89E72DF619FDA6021550754A0D030D6EAD60F32A4889A025703DE5
A8CDED50E5F7F6F06CB9A29BD7A5FA653CB399D3B21A2B4BF37F51C31C165D68
01F36ED6F31DB77CA973CF6B83D22495487E1B6024F5E3102FF2C81D6BBFEE37
EDF7922ED0D015B44F48A5D9D038D9831EF172D0346456F4B9845DC2E57D2DF0
566DC8DD79D13BF83B380CB195F7619E0F6B2578A36C3EBAF45E775F06CB33DA
90630DA177E741F5E86D6C2CCD285CE0C39070FE3BB5C5AC5EAD82753A521F6D
E159B9CC589E1DA082437A1E0CF115B3B88DE31461153596734DFC910E7D2A64
2CFE5D5BE313E4CB2B7665893A51B263E664094A94078AD2F3D7A189168D95B0
029D54A6CF6D85773F314ED03B0D43A5602416F30BC1A9B44D7AA2EE12034AB5
B2C7DE0B9F15DC55C6C808C5AECEF16F70453F209BFF0D5E9038A6603946D9D4
FA1FB5435EBFB48DBDF1521A1AA595DB64FA37D36CFD73675F18C1601CE2D5C8
92764CC093EB43726671E23A6953368F4C31CE413326629E87264D1B0D1855AB
E20AEF4B8030F0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMTT12
%!PS-AdobeFont-1.1: CMTT12 1.0
%%CreationDate: 1991 Aug 20 16:45:46
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMTT12) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch true def
end readonly def
/FontName /CMTT12 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 35 /numbersign put
dup 69 /E put
dup 73 /I put
dup 82 /R put
dup 97 /a put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 114 /r put
dup 116 /t put
dup 117 /u put
dup 120 /x put
readonly def
/FontBBox{-1 -234 524 695}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E
C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E
3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B
426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D
D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161
E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32
6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5
A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE
0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC
85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF
F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4
C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC
12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D
048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8
0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725
741D08B9DB688731A6C8F9F0B1FDFA20C46ABF1BE836FCA0757242BE4780A41B
C19304DEC802CBAFBD0D116B1F98C01BF41ACD72DA8C56F8A03756E1850CF32D
F657FFF4377B43F208A3F33191F9F6F36FBB0CDA3514D68ACD8DCB2FE67AB377
C6BD16D11FFFD61E05B8B311EBE8D05013ECF1D03F574982E3581A188E337498
3B68080D69F7D88F2863362577B6566B9526D1E05DCAEE47F7E336489F4CF445
E5F4E1DD5EF2B795F184EC5B427C77D49CF637A5093EBCA3A9301D3A057CD545
006C0B924705AF4FCE0E82FB3B8D18CF9C771115B142F1C4BFFFE6F26661072D
C3EA6DE1D6FB7A9C7493089D5CEE57BA9C20E83DE3E847D9338D7089B1328215
E4E0BB65223399069F5D53CF8691D89A311DEBCFAF992FEBADA71CFB53B5E24F
1B727F0EC6BC105D77E4F233FF4EFB10B9265FADFB06574BF93FB1F368149F92
6AAEA1A754A8FF3136F37F3E25C29C869E9CE869B59B977ECAB24286F4B99B8A
668F07B6CC0A697CE07E67A481AC6ED4008789FE0BB89D9D11EE886FBB00C10B
CF304862251BD59DF84C0088B51C6AAC4DDAD476AEDCE5BEB65021ED6B7086E0
C55F96DB5DEF8477D680C007D8E591588B29524182108310D03E5A0E9F0F12DE
AB6842D38CF2D3EE594E9196D3494B6B03C560AADEF51E43709B65DB690CF58D
BCD88C71C64AD82FD3222B957B3DA1398C901AA5067BED7E261B031961F7900D
BCE11128049729759EA55051AFCE7CD0D09AB733586C41344448D26579CC7322
D6F2A6962192D17065765ED5DC19B6658FC069956BF9A000170329847E76C98F
B5D2B609A742C889D834D0E419B6017E2BC5C391700E23CD12F2CDFB4F57578E
D2B782DD5838CA6D96DE81A154BB93B841F70251FC68DF203C3E827F2CD1F064
4B1A7CD2E583719E3C38721834319581EAEFC2482B6B29E345F07D3FF87D4B3F
C4A190AD6DC12DF8ACECB6F0FAF648725BCAE7AD34EB8E52D7EA8E26C5D1FB82
1F542F4C5DEF2D9543A178DF450B4EBBD052865E1FEAFF870B3FDCF03EA6B61E
26A2930929243D7D1FC03C15ABDE2AD8BECFB365721A9756C4B84AF32404D98E
25BFABAEFE0DCE7BE73BAE2C5A2398ADF686493D38A4AA803B3D7D52967A84B2
331BE7B66B07C246070311CA6906FCA4800C12B71C1A540927420470EE4AB54A
74DE20E9C17514348C8001982E4D8630786922C9D95BB6D4FA8BDDE115024B4E
8D7A5C657CFED667353E78097BFB8894BB315432A74DA37C863D0F904B0EA68E
CF43158FA5E0E640018D2823001D1D738F420EB0B6540E7EC1F176487DEADF56
F2BF8924C9CEAE33342276F48AD3CF6C5DF3C63AC31F71969BDA4C2A10AF55E3
6CBEFC0A59E70D56E09AE53FE1DA8D0B451ECD532EA070D99A95A8D51D6CA64B
DBB7756C6901364B51FA62852563D58DFB6FF60E61448F4032B774E17A8DEE56
DEDABB66DB3D478775E6ACE89519B20B9A7BB0A964C7EECE3590208F50E10C28
155AD617D2718A0DE0D1E60C9F6EE7A711EABF7410ABC2DB9F3FC41EF67167C4
D639EF2F32CCC7709D75EC382685554EF0719DEAEF5FC865BC307BEE64E65363
AB4073287C2702D932A9D9F8D5769613FABB798BF2E6F1BDBF8C6E1C787BBC44
3D8778535069F4692DA7657609E560441404F4D4991F82FB63D4DBD8EE7EA137
BA6184877C5EF892023F90D562ED0408B19B0C4C9354B74A3D3147CC1EB5F070
B4823B5DA06DB29B10F03868362167B5B19938AE75062091B6E7927F848417BD
DF97BE0EA621025AC45F88860FE79EFB506A1527679EC959A9E42B6310C08989
9D3D59E7540CC672CB47C33972B6130E1834D41C7990CE5915A23FDD9916A271
F69496F2B0CE50516FC2D582251A2098BD005B49700DEE0575AF556DDA1455BA
B567D883E858208D4B794C59BB2A4FAB743244A871A1F9F9933E137B553B736B
311E9FFAE9DCADC0C139C44437F611F3A2ED50399AE7227AE67178DB3491860A
AF3079858B4247757E98F689142BBD79CCC73DF820F4CCEBDFBAC9BBED52B12A
F7ECE9C0EBF8388210A6B356902374002F51DBEF8D22EBD7D96869E09DD421DE
58DE68249A16AE76269EC77156362C241BB7045A46A4DA817559A37BD8F88FFC
CC24EE7F34F37FBDE64B1AE244D5367CF0B9663BDF380AE4EC44619B21912B67
6C0B36C7181557F8AFB345C8079A3518958EC2CB0FA1D4A311DE47B377A2DC7D
CD965EB1AE695898F63D024892E19AE37DEC91AD018F7A8032B012B9B97A9FBB
AD1DA54E1B83A95AE60C9EC189C5E5E7DD4E09B3CA8E1E6B07704CC992DC4626
0386A2256F2F2E919720868EFE4D2DF488CD6D0689C9ACBC4FBB87C163FFFB69
4F26C1B8C4A4EFBA606F802B4BA21D24A8984C98B396445D893D511FAE2F9C0F
097DBF07D692D26C06854362480D7929A0688ADE39A81473B063B806C23096B4
95F0C70A241EF7611BFFB8B0973CDF6CB6142279C4F47AE024073B20AD6CFF48
B107AF480A858DD773FF4A338C442B07493302E8239F3AC31A7F8FC23208D737
E7F8E97D50171A8BEE1EE96C08F1D20A2FEFF0D00A9DE1EC371DA48BCE0E4DA8
6FCD415A073F9F2F6EAA5704722FE3766F6F4100DED517C960D58331622CF69C
2302888348D2CE1092CF929DE671C897C0DFE44365271627E38687D1740179AE
8ED7377D240F0A2814E0C08B6616295FD4E5E8F754638C5635F8094533F69B08
5F96BA5CED2C62FED495C731E42AA2F39BCE98298D6FA8C01CC59046246496DA
3A24E087BADF19F1442861B75C2A06166B14DBC3BCC23CC3DE3219AE29822387
6D83B534A67577C784CF6B46E737E2B2179D4F147008CD1A2BBEF7B4A80CB60D
A4E4BD87347689DFB2FA0742ECD039B22B571A5113780AAFAC59C0DC3F8D5A5B
456E11B85E6E6D063CCC67B7D25A67C16B246714E62AF30B69C1D67599D5E458
7F500772A671FC0E119E5ACD77CEB46AC75B48BE133908121398079E4000ACF0
EACB950B0850E89F51E435C15C620ECF7218C2B4FF4D57D4AC178760CEB6844C
A5870CA8E051CA76C6B04C4CC80C43C41E15FFD8D4F698BCCFE7DC1C90C4CB05
23AE0FF4059C6930F3CB1341621FC1DF6540EE20D6C9FB630DCF194B08176707
C8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMBX12
%!PS-AdobeFont-1.1: CMBX12 1.0
%%CreationDate: 1991 Aug 20 16:34:54
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMBX12) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Bold) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
end readonly def
/FontName /CMBX12 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 12 /fi put
dup 39 /quoteright put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 87 /W put
dup 88 /X put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
readonly def
/FontBBox{-53 -251 1139 750}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
30F2AD56EA22D77BA06F2F0A466830FEF19E34331E1F94081D7A7DF573993D0B
61B43C7B7DE0CC105B5B0AD4FB2346C2368DE176271B6AF85ABCE1604A8471F8
610521331EC001C005B32A13D9331F5FA7F35C1F7A21D7A4BF11299A2A858A0C
E5B66CE90B40391C60547F3AB3F69EDE4C21EC0A8B84C2A858129A38BC96C64D
7323F15E683EF995DB39F64EF2BB5130944079B4080F9EA9A339FA634F4E9487
4CECBB2CE721D8B6D33E6FF0092FCD897265C3F4FB8D419A00AB84DBD86BE941
1CC9F15EFDDD7CBBB2290EB737BF49552F30C6DF3A19ECDE4BA597A6E064083D
9A5DB7C0110CE0740FBD51BE961E465D13BBD2D0AC16E58D373373F4948E7C50
A02308817465EFE46902D6F960D844345DD1EB56B730CD7DA783C65C201EEAFD
B926C823C94574324BE5B4612801BB2DCCBCD41B8EEAEFC29F864E7D208ABD18
35691F17054866FC5D916E1B2A00C1395EC4511448F7BA1E3C3C629443E41976
1567EED3A98685FE77476EBEE84A624B5A0D25031B48EA5F38CD9CBD24335AFE
B4C548154D9B99A0784AE2369ACAA0F46F6E8A44067E673FBDA84D1750E3717A
6B3D74F489909B34EE61A0FDC7E494CED678C838EBB1DD2588F7FAB110084800
FAE5A4224804584F48B5DABA6F9193D1C49286553274E0C3EE06C2BB895AA812
E29DF9965115FCB07C0A68C9595B2B9BE3836F2763DBE340172EABD8BBF6DB9E
A0A0267FBEB4C50DCBCC838B1C5481D095645CB647693FF983CB7A77F645722C
39023B8CE4F5E6A603B8857B592FCF2A967F2D7CC08173022CFC8D3143E87A33
DD240DB328E0D2ED5CAB32CF3BE6B37DA1A19A4CF33C55421C3928CAFBA52F4E
BC5DA85F77772ACB1A53CADD5E399146D566D643EBB48C78FF60363869F6001B
8263F9C9DF7C1B14291C2A9333A1F69B25470F7ADD9DD0EC4591D63BACF58465
3AD134B9426F22C21C31699FDE2E85DE7A101D82117304FF7D3D9703A7217E44
7FBEA4ABE59C9FB53F0C62477998A59A652A9F3DFC8798216592EDEF754D5A76
50E611D42F507F7CFBE3532B929369E71E37D902A0040876FB8DD7DFD112B673
067F5FCADFB1FC1124091F45B001658A2BF12DA6CF4760D9E169DE215E20D0DA
2C3620D0AF19C69BD13E7A7159A2CFAB0EFAB2F72A09107AB44F14548A582CD4
AD89272E9789FF21FFBAA38AD6FEEF0C85E3880D78A65E3D9101F72481918934
63FD4B8B4CF24A6C832388477B5A555D40A672C576223C51EB3ED872ACE733AF
EC5A93B29CFF11DE8AD8ECB58F809FC6D43321E2AD6546E4020D275A26D79F6F
968E9B89E99AC126FD6F39404AF1A88198D5A2C0C4CE1E7882050D93CD801FC4
AD8D1A0334B0F3AC56AE5E60F7A674C019BE9BC18458F01EA62B810668CB02C2
FB68F5F2766888DF49645701005C25043C639DCFEC20FB802697A11E40FA1CF6
55DF72A52D2D6F810BF29283E136C1E6F0BFEFFD3CF0825A198B47B00A23A770
A0C28AD555FD08D2A0B8B4760EB6ED063EDE4B9719D4FA1A8E7941CD46C801A6
B4645B0757F3CA21CD0F8119C0B1E6FE7B1CDA8CEF6F2668E43FEA7FAE0B7B02
7C5A271D074156918BBD440830259AC9B716962AD8CCDC8FA4F2F84B3F46D5EE
BB15D948354305D8E0FF13DD32BF5ABC95E089CE90918D49554613EBFF6517E4
EE9B6D3DA3741A7D33C0AB1BA08EB5C8E06CD5702FA786548B02CE435E67F7BD
6796AC065EC47D9476B45647F61F669C667901CD926CDE522867AE975FBFE7EC
5F90F4B43812974FE981DC8EDDCAADE594C1DE20825E23F8CA75BED3B75F392F
B939EAAA2F831C7F229C17B3E40810B14EC67EBCFE6E4F25E4794E158904F49B
79288FFE4C9F4B5E0C8AACA70F88E34ADAA5895EA32E8249F998FE852E2EE038
281FF1E663424CDB90828CD9CD1DF32DD2E4B26F3828EA77E76AAE3BF197B4E0
B91E5DED8BE6FB70D2275BDDB7FF644CEF12BD16B723BC8D0ECAF12EEE52E25E
173F2E6A9C6C36E9F4F9FB7199D83D03D24E29E9A0D641A983A91A1FFFC8A314
CD9DC15E7F34B0116C79317FA4C3612DD9D0EDC4C32865B0CE8E9E2B774DFFE2
26DC69B8AD7AD6F8F8BF77765754997CF93177A522B3F10780CD45CFEA64A8AF
89D864BE2A503487ED03840A4D803429A550990DBE861EA317F490EB39405874
BBCDF431F32646DD5D34AC905E06D46BFB62070BFEC1AFC647C0456C79C26DC1
B79377E87F09F567DF14E0D30AD87FDB95AEF4C51FA871102A0DBE194AAC583F
23679254BA727A6A214C4E4FD9989EE3A30C8094AADB49D0FBA3F3E3B4258263
C7DDB9D72608E5F6E3B99FE116C673D6CCD9C47F5E3240610DCCC5AC00A73F30
C91583F620B16F90A03D3475BE771BD66EFDFCDA632150DE5AC97E952B4ED554
3F9BC9BB591F986222700045FDDA6D60EBA038DA833156BC54DEAA4495313748
6E8ECA1A33DDC9E6565DAE1E2C1FD69ED67A1E05AA0B28C528ED4499922DC695
73C116803A8010C615D3F9D269121F68B48E04EF710B574FC49C4A15A8E83A3A
D18A59B3232BACF551C6CCBD97B64028783FF429BF6939BBC76028CACD804CF6
5149A45D34F6D8ADC517B4262EA59DDE130F7AE6ACFDA695C40E83E56FA126B1
F3A0665E2FE0D7FC4B6648FDC2F8437114E507536C85D05EB2FF0BC1AFA01623
79840A9E284BA22CBDB6581F9C5BDF57F79D07F60CD15FA1DC6EC17C50822C1A
8A97D3EE4DF997004CC36A69637223240644EB1222508C5BF99FCE27852B9109
D92E66F77060C7478BD20F149C08E28B642C4C62A978BEE5DEB7B07E5261804A
0D7C068D672385DBFE2C3F9E0B2272D8200283E242195FA510C5A46E43D83038
8045D93B1990D659EB02BCF438D2DAF48A05DC23239ADDF0AFB4A20BC24724AF
9D5C2828C3D18A49CD73AE9FE1644033544110CF9E15066AEEDB86A9C02F43DE
74717001967C1E7BB6D8CC433AD76167C917C77310F659056F06422A86E1D34D
FB4F8ADDB1C30FAD89400485D101A7A2725ED5EB16C2850BC282149150E48561
D62101ED857D5311BDE330EE44776B0E1AF54BEBB37A302E80659540526A4F03
123628FCBBEACE10EBC0D75C141C3153AADBEB72EB467BF01034469E8BB4466D
A3673C29FEBC30BFA2BB199402097A66AF423E27472676644ABCA59E79EF6077
219A24280CDB3D15610628591D9FAE5B6C3EC9007190B1F36D4111BBE8BC1C28
E1C958FDD027B22CBEE14A9092C558D02BED792F3F56CE590B46E3DE6DA67B6E
A56E128B7A413F0D814AEBBAC6088726D955A9DC96D64CD567805B696F2752D6
0799764ABBACEDD7473385D81D7FFE7888277417515B82FC0E2852BC5785103B
42E89797FB6017468A3A8C356D6C8F333BC2825DF54794F79A1B4ABAEEE9A8C4
C46F28353A6933EFA8EDFDC4F69461960341EF093E2B2B944349243D53B46268
ADD3DD9E6EF440FE71FCCF97192EEC16E0E612CAF35C974449033AFCE7AABFC5
67B87540446CC4140A3E4E1384E3212E7036298132A0640D51F75BFD045B2504
70D470CD43791ADBAF38F841E60D7FE90952A1F8682827159D3DAAC8C4C9734E
191953E4740ED519B49D6C84D12F80FA26D78AE444AC5E8933A056814D869A29
67B5B19915D2AE5B50ED1B1662F2CB1F82E5C632EF692ACB19E6A7574111FC2C
0D5F057E9D428C86892CFEB8839095A4AB8271F03FC427CABB3E55B8CABA77BB
AF7DA1891625E89968BA3F47F2DEFFF3FCC1B9EE8DE5CB897065D5CE78E38173
5E48CD1791EC8B637D101D348048B1DB769219DC882213C8C1E10C66B2652B94
314C1D5CC6B31F08B4D6F30B65BC8BEDAF49DEBB96F7542337DD61150280EB29
233CA94112A26718B472E996CCBE169DBBC9C9555D5357176E6BFD9CFD31D477
E1035F33A41276E2C509A221AE8753313FC58BEE7D83CEA5A4A0C1DA7CD7E0C1
6FDC2E18794CF5B69C5B461A09E6CE5570559AA581F29E0A534BA5CEC636173D
5DEC8F5471654FC84C629FA643370BB9D36A892708B9755C0184969E67E2CDA7
674D1771497F686464792319C83987420E453CADEFABCDCC3F4981686D4C03B2
11B5DA20559261C37F27B2EAF1465A6B96947494B5508497DBF54DC5F2A03D9F
BFA8A1752FAAA5EB14D728BF6FEB972F25AF6DDD3B2913A3CE64F692D1A305EC
C2999E2A1343E0281CAC6F425F05739CE334B78073D2E1F4AEF0B705981213C7
47DC53355AF7FA967D45EC1BFA2BC0A7836099E3A006BFCB873DC765CDF3D19B
24692EC759663688BF0662F0D3F8AF55D12F0C842C27A6FEB80CFA4CBB095F57
78E554992D3D45D6A92F23F6E25A034F3553CF691672F41F6B0BF43BB2DB24EB
3B8A4830945CE9EA00168D4DF9C714EFFFCD4AC233DD015B3F4C38371360A7D3
ACB449FABB093721E1C041E72BA2508768CCC010F4A19DD67FCC7987FF987C6B
43704CF6EA27E536BD2C3F9CCD0D700B06C98AE5C22F803CAA6A8E788D155823
D358435A99660D2B34412F1D3C5998C3B40B9A73F68F54EF8389863A1814B96E
A94010947B480F8CBE845A8944AC96938513B8AE8E2E57704750FA2128F90E14
E71FA3B995E103839C29C20E4EA5066D21EE48D6224A67B967758AB269E6B7F3
18983C5CAF6B33F078A13F3DB48058D74D5D10C6C9B296AAD9EEB85902CDE344
2F6F99649CFA708173F4086B6F323A66D0FC05B144DAD0771365E03DAE2B4709
DB55A5A0827AD1EAC8B2F1A46C5D6BD0481509E641A5A019A8E58BC797AC3FD7
9FFB1A6E848CDD5D9FA2F25D80116718A5B9DF30514EE96EF7D4FEAE5FAA1724
7C854FD8B419E0B7ED814E91491517E6CE88F1AEAEC354886EE2B9E341A9E0D7
8BD42A486D989D6F50D42B45EC194D65035AA2CB86DF2B1A0284D11A3F187A12
03F5A61B4BDE407529D75535B2419F7ECEE68DBAD4D76D0118C2238B78ED9C25
71E559E6E05697D8D17E29C9377156823196EA379485DC634F4DE93C0E9894E8
2185155A437971236621DE35E5365CB420980BE8643E31FF0B89BD6655025538
D411AA419129627234E6B3096C6904B1BCB14A2D65EBBFDAACF677B50B568784
43FA5264F38A018BE9FE972721876E06EE1331E46CDD5782E0FEDB4BC8F975DA
9C5BEC3265E63D4B4800ED113C5C15CDC2F40F456982F5D0590F0E20DCC88C4A
89A1020C7C43CBA2B6F7AE7671957BED876054964EA41FDAB9E7A1FB0362C2BE
9AFC5F3C0C7D2C9389868FDFA0C3B732C7B9E107AE408EABC669360FE1E03BC3
13060ED9637908CEEF7ED5680E0DA718760CCC3CDCB60ECAD3FDC2B4CB74A735
C72C290A9A6D53B54E08FA375113892CE62F89231539F09EB4D58C776385F858
DCE3D26310C5588D3E16E2BC10B8B16A8215F363F9CDD80A94020C2FFFE3E548
49B37670C73D4DB40C7099110FC2EB93975D67F5A62369824E495A852C041F4F
2DFEAA0F42A2DDF2792CF4A2060D65542D3FECBF3477EFD3C521B90CB1EAFD49
E26F52304644F2A37FDDA0C7850A3A9B782FEFBAE353B93EEEE58ED765AF1804
C0689E37BC345979B79E3E1F3C514C42B7AB7D59F5DF5F8B40C747C300D57615
624C4FC8AC0A3DCF246B19A41E214263997AE2B6D3B312EA95844AC0671664AF
0620AE88DB37C41A4F13421EB46C829C953C5DF0317E6880E587F61CD46F4CA5
3893ACEDA038207E4A35E1D86ABE4E2B21AE9E273025DF340BC47777EE73801C
93447BDFFC43D639D852C39B28F6BEA5C90DF277DAFD9514967A8D0CCF2E7745
8FE8D5EE4DD2F23C28351649D0B342B5116BF34F732512FB416E2B319218A40D
ADBD63A2748E6EBB46F6F17F35FBB194BA6F795E3FBA0CD05A32F10C42B21889
6F819F674C01DA3EDF3238C8CA55BE4849FB352B4FD794A485250641A576F480
A084184C92C14EA83AAA5A2EB34A9284176E1A02237862368FF5ABCAA066285F
F358046D5D04907854324892071AB2A047592356D80E19987541F2D598662FA2
0365F9A39A0856BD7F93669092996399ECE51F8E477757742FB00546D688F0B9
A7C2551967142E276A290471F242B4ED9333CE2356CBC2A99EE836E2E4820B61
7986285AA88D3FC2639BF18BB3DED51BEE599F40524B4BBCEA79D1E46AFBB3C5
AC0FE26C5FFD7C6081BC175C52999659C6793C07BBB637FB36341E4DB362D773
B2909AD95B5F1E11139000EBAD51A9D24AE4085982B7E61186F243B33D12871E
D0948642F97BD79BB39D8657924314F27E820EAB750E41D29C7CFEF845D0F601
E56C7D048DC7AF3438BCBC53A07ADF38CD849BFAF21F61A4A24D17198578ECB3
4DD8852FF482546832B8BCAD2DD6074615D8DDB66A33FE3B8B0DA428D50EA211
AD5CFD15BE389F7514A5A5FE323E2B9C97441ABAF18A67F23018C43217AEF45F
17C6647937E26F5AD610F4B18565BB6CD449B81FB235448245D6F9CAAC9D92F9
FFF93C4168840261F7589B3A8DB4D0F78E2A604AD213B99303E0F6D0589630D3
B8E3159CB4783038083A91364566E263B8CC2F2455C48AE913E5157D96A2BD1B
52A261C658893878E894A0BFD44886BD3ECB11519A82CCE89CFB8274FE0F4BB5
C7F9BE905D3AAA73C27BC9FC6FCE21B65095E94BB9AB6501FC652A81BE1687A1
4C4225BFB9941EA4CB60B8D82938B93948DC23A9352550BF7DE3D46E76B0A433
4F9F1017072A2D8E7FB1C2D58E480C18FFEF81DFAB73FEA27F7ECC51F165ACB7
5F213C6CDB531E501A7A4605EC1268FE9BC3DC6B89569D96A468A320EAF91CFC
C1E4F0928291AA97FDB899EF2E9CE69EB82637B1C524078CCB1603B6088D8D00
2D0777EB4584C3CABCA195E51E7EB09CD92796A77551A6DC14E3311F72B5CA86
87CF919349C98F003AF23B5E03E6A15D1DD4B4CD8E84AD57F054A3D445F81567
D285E2DF39D092D986665B88377F455440C747806B1739AFAF84C30945D9EB2F
26A65CBFA704F774CAC3B9E38A55A82C3506D6758518AB2FE3AC89529C13D35F
87897C63B136CBC2013F2645BA7956420187A744A904AE6BB33BAF8103D6BD8A
931D22840673C62DFB28A1F23C2DC7838D1D6AD7763F9E05DEF2C121497C1685
B075C4055470A47F17085C67469BA2124830919AF3ED82B38B8C5EFAE339FF1B
EEA7A12AEE8F102E28004F8AE79B0AB60B8CC817A0D68CE0F1BD9E885094C347
C511E63D370F825EE95BE85A1D154C693C18DBCE12E942D928DCBAF016970245
4FC922B0C7970F64943ED763D2EECC3E399B506B3E56A19462149043100962DE
E413C72E7AF1136B5E094B2A4816D47CC5B47FFFF949BE443BD70545A548F6DA
DE6AFC68315885CBD2C1BC74F77F04A07A1804631E2CE1D220D9B862CFE5D5CD
F17505BDF10BF363CB97933FF5A60ACF9AC3469E4B42BBD661128B7AB31A5930
4CBE1932E5983CCC1B86BEA8DD906E875CFEAA13D4DC3F212E3052ABCC6E24D8
14B5A8DEA80E6039839B19CFE061BA7403A0ED03B1D3DE7CF9C4962ADAA81658
2701C6E68F39F9C541921FA7FE6E6447FC7F572C8E9548A7111119289DABC372
8AFDD37C56BDF6D365FA2DABE27DF2AEF88C35C3D9EBC94C94DBE31BF141E26D
8A9F5472C2D515E440BFF9620B21AAD3A4A3166279421DC7425DB3279A0DF296
05FEF91FEF850B6547D7595AF0FD13AF86684EACB0290DBD10CE92A5CD2793B0
FE0E9C3A793DAC83AD01C9E5BEF9203E8657F378CD7A792D29A0D1C407E99900
CF085BFA76F3AB5E9D8F8D59A6CE428CD5010EFEE85BF219C578ECB9756BE27C
F033934231AD14502B1F12FF836B920EC6CAC8EA3ADEDB4BD2ECA48AB23279F4
55EF74BD48EDCD56464F0516A2AFBED68C1AC0BA8391EB96EBFC60C61A8754D1
C357FA49368ED17903D6F7E760A4AD6F855E14C07D1BB8A7B343899D7DCF82AB
F34EA2499127C469A1DA84A3DA7B445134A616D6935B8EBF84C107341042E041
E5033EA0C2D23AC322397DE2E9EB3DB29CAFFA65C38C5ED79FF25DF0EF408B46
61398537747AF78AA0B8783814F1D299A1786669AC20C9FCBE5540C7E4972E41
5470A6AF6A5C433629113E51E07D3E441A95A44C4506AB9497AFD3C4700FCB0A
B274868EC73D82092C0378F4123D89EA694CE41D273FAAA0389A1AC3DB89D6C5
E0178774717C4644EF6A491E6C1BC55B146691BEB7A404CB3708E027E4313F01
57156C67C27228B58F09C7CFDFB4C90D62D4847BD098E47A3969717EAB24EB89
A997CFC2F952CD14B124FE9F1E164F3E2DD5DBA401DED52E65A8DA132EC5E5C3
7FAC370CAF8FED689F121E38A47F1256636D9BF115207541310E32101E99C055
A4B070EDB92C26E726FE6B65AAF10045B08F688828CE5E809422D1B1738EB52A
A9EE895CB904BBA7CDD3EF653D5120BA7F8F2F870BE878998A974F7F2F01C17D
C2178545059BB0742CAB359E1ABCA5B47ED445CA3F97498A6E57A5D0944634A1
7FF460EFB58E7744D7EC54E0EFC7B8C83B22E743FD6A0028F4A4361CD7935F6B
2F722AD1BB6DC8523F1E0335A4D63511867BBEE5E874FFE3CC61A7CD00228979
61E3FBAAE1BF250DB182B3C7130BD1F07B5FFAC394E79F6CFA0A017C487FDE38
CB69621E95BBFD061A5577BDCF1D1B4C66B52A76FBA718D5C248889ECF0D607E
4BE550E84FC70BE347C13FC002B64766F205935BB0A9DFEE84CB31209BFB035B
2DC6820740D31A84F6C419F1985D6F8C49B343F960A2005BA11141584A6ABC0D
DE598ED3DB0D6999EC263B3F0675C0B7A532625912EBE4255A0AE3CA812C7379
A4D321608206F7430DBAEBE446088581071C20EC2D06BB81A4F0E9E1E4381F85
C895EEB9A325ECBFF8AA313F7E4FCC1DAB66C15714B94530B936B5B3FE7603E6
B9E9FC6C7B808B14EC6C0E3B7DC4754446E8920D5654B492522DF9DEF807ADC1
FA436261C376FE222F18FC08C6D7258172E081E17E7D51792961767C349816A6
76B8EE0C03B93768E29061153016602150B816D945C7466EA7D62C77E243FD29
DF74331BC4D591E20CD68447618291F798D4BD912F53A0EC5C294A1DDBC5DAC8
A5D90ECF359640E1023BCF98509250FF5C35A68DD1B946C4ACA05B8604ACC8B2
B67D34A99BB63AD6B3B42CB8E17E0252AF1AFD9459476F03722971C52E22D5DC
099A76891B051B889AE1DE1AC936F085FA09311732382DB6156E9E7DF83A5B2E
9F6427C43095885DF47BB7555401EC605422BD8C31478545BBA64D5FBC189038
F355E3725A5602B5027D6F457EA83377F4C2DC7EEA1FF710CFFAEED5E09CE7F4
3EA1FCDB897D6A3CC766C6B399D41FA60B3B555AA3421D7660D9621CAAE2B180
AC11853C49CB604A8B2C3D826535C42F52BAA28ACACCC12043F2C346CE9103B4
37E3E1157224C43F5B2E969390E6D5362FEAA2C62F8ED0CE84E054D16D86BFFB
4351CEB16A4A391676C2DD398B8A31E5C67B6234CFB3A8142BE79BD339355553
9CBE52A02457F9D47369AF66193C3CCE2D6979A4F0F5DE831A7CF7B4E3B66511
CB8E06DE29A47938E58C100201C4BA8CFE39B5C3EEB2E1B01B57435314CAD13A
3F5035911F8B5162A4E0955DEE8B879AE105DD03CD20EB908403797D50805F51
4472A54BCCBED938E36B5AB30B73BB8F092FA9CD2B00F2DD3F828F866DA2B84C
F27B856D5CB11458D8870FC1AA728719ED43CCBFEF9820CED50DC96CA828B1E1
8D4FFCD8B6ADCFFF66B4790D1FE39CCA30DEBE04DDF04A5E55EA54C7751077C3
E72A35086C2B3E543C0D29409520CDCC8FAF6A1BA2D9A0FA7FF7FF1CC890953B
5323082EE9BCF5BA9CDA6CDBAEB9B523D86A558B5DC81D154BDCFC015434DD0B
FD457F366003122784DC67908A9DC390A297F4244E88046A24382B08A7DF30FD
7CC3EFEF685836634FF1E3EFD1E29F3CBE5797C826ABD400228070FD68888D9F
885409E2D43CD2D4D96A24DCE3E6C8838661CF32B9A102F60FD39B47D9AB812D
55EA6DF864488082611BD56E341E253BD95DB987AECE90753775371C3A2C0290
FD7FC05FC21EFB6FDABBA907DE1A961BE8D2F28F161944970771CC8DF78BDBF1
5D302DEDAE3F3519263452130B045671E0E86ED5DC0310EE26EDB4BABF8F6F08
D3C17410B205701DDB88C2F94024A416DFFECC8F7544481BF91E5DF985EC6EDB
E2CFF242AB59DE4EFB6F320906DD09800C38446F21335C20BA78B5AE65602F61
EBB1E83E9669BBDFE6BF7368A61C5E47E68BA00F640821B8991025B8B152A94A
6BED97C3E628481F6F21D0D2E1DF5EFE1F7A967DF95815B9255E23918416560A
1E1B6D5CCCD041E9712FFD6FF0325E296C0CFAD6BE60BE7A8BB5CF7D920874D3
8752031B3A48ACABEE9E19F08FFC82746860D54C611234C5D6784A115E9521EA
EAB69FA29AD8F0F2332251BD6C12DF014163513192AFD6ABA455624F7C26B734
630392B7F2455E66001C8F52287E87FF8B2EB440537C48515184388EB217B580
01F8514741191D3DC521385E82A1AA8849852D9615727933CA52FDB38064F646
1D80641978E057DFA5304323B2EFE9E2B1E2A609A935C1D74143E184D85E97DF
347D8DDD6B5CF6A6D2A27A92B2C07DB67D7A9BC3D0FCF6EEE49DD662A72808F8
3D1E9A957AF82D8D3EF0DC20F8D7EA185FE00BD3A1A8B2D4F6681FAAC22E0868
4D411260D6DC078DE728090EAE947253382E30C53AD2B256E4E5E1B6AFE8ECBB
A31BD6AE2ABE4BE777C9EE4CAF2C2798116DCF287B6D0926969000FA47CB3C19
FEA6B8887E9735F59EE43EC90D9D52B2204A410B41302E578B65548989840C1D
82BDB23AF7868AC2FF6855A8D7E9735F63CCE4D4DB2946D933330F5E9149F6E8
F5AE822AAC3A2803A393C68A393359761EEE28301A25510DE0AF46D0E9F83844
28C46629D2D484E7381CB87BFFC4AA6471F79902A3EC18658C102626F7C4DEF1
1E3B051E248491E5A8A1507F7DB367EE0620CE5DB79268D05A2E9FBB56902BBC
4EED68FEB0200D2A152580B962EEA436CBE650FA4E2884FAB6CAFE4EF60B3FFB
3B29B97A5D3FEA55F2EE2AF2ED5C262830B07E8194558E07D7AD01EC63EA9FAC
B2B33F5942D54831824D7F0376E51BA201000FF4CDAD5E94ADB1EFE4629FF710
E714F80BF3D5F5AAB5BC4800056B8F0F47F18DCAE93340B4ACF5F93574E6C974
2F27C2074BA5F1AACFD73DF602833D6F6182E10B0CFA8296436529195692D4A4
D66A39068A10A006D64A7179633440862588A5DA935B8101CEB1E5954F877D6B
7CD509AF93EEE18695ADBA9C7DC80633B05373D17059C3B7E5ECE6BFF82532DF
F06E0FFF2B63768E4538BE6BB157109F3F57585501EF7A0D5FD2248AABEDDEE5
EBD432D24FAEFECA42E27686741F40AA51698736CDF00BFED006E6E01BC3F778
A850141DFD36599CFAB70B577DF224798B4FDBC848472AE644104F5A45C3CDCF
E2AD8FA96312A36C9C1E7DBDE770728BEF2D9D74276F363442AE020ADE92EFA8
79A780E7D5C08373BA673F987E217857779FE0957A2DAA09D31E6E31E0F28375
F6D22DF1B34F8DD220E35F27E95CDC60FCA6F79A3588F7B9AE8E9E30F262C466
8DF9958BC5BC3B86DAF58D71D53700EBF407CDA4EE30F95833FB3ECF9DBDB6F0
AF1B863278C1375E42012A9AAE14FD5B075BE2AD119AD0CBA0DB26536037168F
3266A29510D9484F64E175A1581E76ABBBE80045DDD3BB55F00CF5DA368392F7
6C57BD09F9C6EA5B485F7A288D6BC61DBB108673284E051002A5D18FEEF029B7
ED30CF7DE0F2377B769427CEA9479529FF5107E7B342A2EE88961B1D887140CF
660B3022DD41E2734DF3B6679C0F2D6A9DEAF08973C360E860BB6B2FFA403E0F
147DC89FCE8FA43F6D24F13D587AF71ED81631D198BFAF2284F02BB4561D9FF6
A2EB21C665CB27D50405267ED7B9BE0D8C882C705E9FFAC6ED67E79BA91BE3EC
9578BEAB4B20B7F90016FA77CC3CBDF6C6D72A0F4FB554D07805762A1F48D5D9
A7EA63A139A412C227B3632ED4B8DD3205265B1D92B17A65DBED65DE8F27E345
DE6D022E8145EDA4CAFC5CDC03232C1BCBEB1EA4B3F56972AD79842B250622B0
F842B95D2B2C6EF3630EB04BDD66BF9FF0A33604E4D42549A4F31C37C6996AE9
6CDFF4C2459FFA02F6EE7959564280D66707ADA23AB7C596383FD9DF4AB040B5
A69A3269A44EEB9CEEA2FDD8C84EEDD546F440B49799CA812A64EBDC04467062
4B4933135372E9670D706D1DA5667323D636FCFF75B76A1D847F9AE79AC07DC3
DC4E3FE607B4DDFE118C167478E28E48380C5B0AB3604F285947108D0C11E7F6
0D49D3ACBA13642F262A2E8EFF9928B972CD1547D509BA365D9E7F8E1280AFAF
B3E58734AD0CB0616F89739FB006F693E1366D7A552453396465CC1E5830D855
7F4582415C87C765D34363984DD5F1FB73830388A77F650830904EE1EF500921
A5175769D633CED97A5C2A19068C2CE9B79B29DE01CB5DAC1304B93DD087DA08
8CDF26B6D5C6CE93264402E876A6CBC43B7EC561567546F141BBBEED2AEF3AD1
5DDC5176396898FF794BD3B7066A3F749CE2BE6A0584E0AD146D9AC8A1FB88C2
0E86EBFF3B8A2A1C77434185CA36503AFA6582A7B6D7F50B6AC2DFF5046B1F16
157AF32E9792E56E7F9B22627D004BBE81DB17EB011C4B5D439EA5F3D3B33E4D
FF9C3A968CCB76B21FDA3A08AF4E426469BA23C83EE8655D5E0A056F344B331B
C3A099C161E971F50D81F48BE931A16DACA7F119099B2876C73DF8D43DA34911
45475DAFBD42C7CB44371417A1C90A5FDE6B0951FC0C7DB145D9D080ABB457A3
E023DEAEA79FFC5EE04C9B51D2B0154304D1BDBFD7BB295B9733D6AAEFA24B60
C7E3CF549FEC3F10FD71A83515EF80C1763F7A00CC17609A61ED9D70B35FCF90
391B1D99A1C6A71ECE587523EBAB2493D653547A62127D0D073FF5665A9E8F95
81E6E59DE4D10839A4756531CE95B39AA75FD9D2A304605996D6409C0CB2067C
B13E6C61CAF7345C63F4E392C0C1579807653F12C574284DA7262C1EB4971466
16E173D0A7CB05338CD0848AA96287887A564472A7E7953887E7122EDBD193B3
CDFA6D0869F71D7B81E780320C053293806CA6BF8267F1440A9F2B27D93E23C4
AF1722F23A055FF81CB0A02493C0DDF4DD6732BC20E3DCE7EDF76749D8FF2A57
0EAAF0F9340CEC0064F74E77A169F1C400E9B4EB040C464A12122A9387674254
0193A38FABE71BF7C8C88C1856EC43BCDEE97C9A6C042DF16482187720DF2358
26E81F0E8AEE029744763481FA6C9A7FD63CF5B42572B0F1CB59B26803B57C6E
818D0F00C3312E0D0EF6FAB2BB79201689B3BFCC59D3FB89349130380B5FFEB0
75B79BE9F4C7C2781E17FD2BAC98869268B48B335D0C9B02350D9A37852C909D
4DC920E6BCE5E3C17FD0FD3C9286AD5ABFE6C5D65EDA24D3DB732C3FC408CBC7
15965817FEEBE2526E866BD2F9C7E6EB39D764E4C7F187BF49434A0F8935BC19
58C260E4B2E4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMMI10
%!PS-AdobeFont-1.1: CMMI10 1.100
%%CreationDate: 1996 Jul 23 07:53:57
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.100) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMMI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
end readonly def
/FontName /CMMI10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 15 /epsilon1 put
dup 58 /period put
dup 59 /comma put
dup 60 /less put
dup 62 /greater put
dup 67 /C put
dup 78 /N put
dup 79 /O put
dup 99 /c put
dup 102 /f put
dup 105 /i put
dup 110 /n put
dup 114 /r put
dup 118 /v put
dup 120 /x put
dup 121 /y put
readonly def
/FontBBox{-32 -250 1048 750}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
95601766758B4BB6C93DDBF4C7D28729C5FE8E8BB90DEC35A086DF985D967096
D3E7E85306E0644684179EEB1AEA576B61F7D81DEA517C1BA8195196F20D29DD
FC06AC8D82DC24CAC6DCFA291B5D5A908EB1CC6CB0B3C0F3E7B35E046BF5DABA
E16BC5801E59C363BA6FB9E1EEF88C74846366F1456B8F19E4FC10F55FA65CB6
96C85F48D63B416B35B56175FFFD1A75138E1AE3B08625CB52023665BA6E0385
09C44B06C34382229E28BE2EF2BFE3E50B79B83CBA64335BA2DA786B88C0A4ED
D4E34C40C91100EDB6C64C822B384FE59259ADF5DAE674A5A2D1A7DBEDBD8385
E33077453C8C4840B1F16CF1BAC2496D5BF32004E14A28C04DE2F639307DBA9E
D933B57FD76E4FA8E2FCA5753321908750B010E87C1F1339B585C7AF4765B52E
785525345B95EAB1F88F6653EB94F785EAD25B965489F82D1D58A16719A62904
D9F4FB3EE7428397A9825F549258A57EDE80D7B4F35F7D051695C4CAC4EC9482
1397232DB7EB2FE91CDB826351CD66F8BA5C01C8EE8D4EDD1D9DD55D22390131
1C7E7BC4D86E883D3909D74C35C43AECD7F8BDC4D914CB6047292FB2CB381096
4585A1C759507803D7F542EB8C3E27367E0A08D929662BC2BF6459234BA35522
597895EC2D84C06F8FB5AC78297220554D7E4DF74ABB6B7BB1126A98D8B50261
30A1E7783915F9DE192E38364B8A238A9769A9758A17992B253414A11EB5D4DC
EE1B408E31427E19B2AF5F53AC142E81CF454F25C3E236FFB9E3720BFD8A3E3D
C6DD94DD6195572F50B075149AECDC4806FBBB5DAB36E3EA606D8DFA762AFCDA
3C3B4113E21B4EDB9CB7793D0C5F6D9BF547E668F17B1FBC772280B0C34F3AA7
0FAF9159097C5D47749B22B5DC8A8949D5E533CD92D9EC8350F6993EA7C7970B
9B2DE2202C4C05B659F21F55E86ABBDFB95533E3DC0FE9006B4A481DB4834032
77AB866033AB6E1B5A1F9FA43DC38E05A15915E96B943D017F2BD180BF18AFEA
1F65358D1DED49AF6A7756F190397EAB6257E18F0869C6FE2C08971E14C5BB8F
F622CF0F51127A316462C6D78585C8682D19D71B626E3E38FF3A9C606017310F
BB25F6D1DD7D58F86B86652E5FCF2F8463237E5BEB75B4B40711328B74FDB395
107BBF386195CED0313BBBFA20B9EE029BA73C9242290394E0B509B98BC3C239
6B1DA19541FBE765BE149E804CB3D7A310EB004E59E6B4FE96B9CB2B44A9C65C
67CA0B65C63E89DB2B40FCCA8C92D4BE263C284DCB66BA2F7E6BEEAA1B32FADC
7F8655171B3B5122AE9678C5F6A368B0894E6FF06E6EE7D9700E6259F38E0931
3D537793FAFD0C1619778362E4C7824AA40F73040916D83C6D1A80218169B000
1BFCAF6B06F9D509D9C3FE977D77E0C1A8A41BD2A1438F3231FF4258F961A128
02D06AEBCD34485CE827400614B1887E910140B259989FADA25CBF8D0F549303
90C766AA218A045D6F747EC814B82CB73CA2B1A0779A7688628470618B76E6A1
306F68471D4679B9A37DED269F3CEF75A49D5022ABFB2DC5DF28FDB8DC39B14D
A7EBB54DA644B1B8950747E94F31CA59E67F6E6D1C7A2427E66169EA8B5BBEF4
9479A6D93531EB072D801AD631693D2CC3CD3E3B164BEF8492850695A36DF95A
646019CC8F2C27D4E8EDDFBE7F4F0533819301AFCB87BFBCE9D6520F598CACCA
5D41A10880BAB56C1A64AF91B46B43D8A81CEFB3C7A01F79EBB4E62A7FE7B0D9
6B20F3BD5088118618144B089EA0C5B0178F8B76DC2EA2F01F9D9711820880E9
D540C5A4EDBA5FEF83F29791381B24381E75AA6F4CA938755375EE55CCA49C39
4572D82FA5DC8953874C2C3921F223F2892887961AC9A4BB41ECA529C2DC0386
33168502081DE821E94C2CCFE9D033E7282AFF6129BC835C0C0449E46DCE6F5C
E3D440B81C0A503CDB76568B73AF04F900F98D1DABC1D52C4B673913E1A56DDC
D1E5024979B24A243A02630E462466F4BB99EFE4EAB14D634CF23138E0034FCD
67503137D3B62CB20BD393D6EF36F80C62F243626A7A2D6DA9218B0427C1E8E3
CE52FB9740BB158041EC003327400DD4220FB051436898C90701C8768448138B
E0AFEC709B04C578A38DAE9EEA1F69832FE6B262F8AD6392535D19A15CBB0BA9
42B1C1A4644234688619BA22FE0BD4510C32D7855D4B52055B39A82C0D527347
1EFD0E523B12163E9AB23C7474F02B466CD4F41397D7F82BCEF6D504291ADCB2
B57EA65846DDE74A8AE9EFC86676E974B2E4F0E1BFFE96BC1BB4F4A66CA2B303
2F6F98E83B951BDEE986AEE4AD1B37E383979FEACCBE9F83FFC6F8975B928EF0
D19E24113EAF98CE0A147CD69EE0763DDB37464D0E2D2925E36BD1AB3A3493F8
76F5F97C7973D7E655A92BD8A654D21706B1621EBB15E2878B635055A32E22BA
435896F96C0C38881B1A10F229C6D75038A0067AEECD011686F05B4CF1D06E8F
6CDEB1708A55D4BBAB7D1A0C18327BDA726589C14581D04232B6135C9B01B889
799E20DDDE805746683A66F1966932F7DBBD626D098D73AC6A2451C90CA1F8D7
9C31749CC04900FF04F9079F4F956A3BBDBD5937F4D0233B1BF03BEBBEC8D1EB
DD6994B5ED9BE1A635411A3AA7B5C94901651CA1D72914009E60B20F5596D016
DD882682282B7F7BA5F7E8A1B5BEC12E444DBF0CAFF85B6AD4878516E79CDD37
A99B2F7AD15E42B867E3EDE32E3623E24B557026C3ED22C48BCBA7747E4DB792
78ED0AA1D85B9F5C0F52028A6E76BECF98EC4C7FB2BD5F8E807E74EBE8FB1523
E85BB6CE6F4B64441B5E917A64B08E14BE6B4AB2E07392D9DF6BACBE5E397065
2DEFFA5EAA259BA898D49350C686B5FD32EDAB6D812F7C71859163FB7983CF5F
FC6B92DF2933955A81A4B4FE2FD995A13CC4B9851917769B1718B351F9A61F54
300B3225FD658A565970A68642DC89AA6E02936D8C6A322C4DC8C0727773B134
66CB736F0EE8B438B58FB49D7EAD39E21CCE9BA2F9C9CD7C3D4BEA0CBEEF6F29
552236BC8B6CD7BD6841CD3C89CD6D428C43DE2DD2C3362C4E008D6BC9D73243
39EEA094064A818400B2C2C54EA94BCABC2E6AA762E509792DAF476716EC8FE9
CB0A575F371FE3A260DF72773DBA384D682F3CF79FBEE54C24A1DAC0F0722B08
67E2EA36BAEE741790858AF7512D12FA2DB3FB8D66547F345EF7383FC453A710
BC79FBBD476FDE53093F0490DE7302631F10979DEBCD7CC46F5A8776BF07CD69
A507CC4B4B29588456DAEE03049CD3DF4F0A8350771753C796B7E9AAE549209B
D8EDC39B96F62FB28BCFA9808430FFC3FAAF92F4E7C225DB23683D73DD1DF277
B285CEE79CEC3CAAF7905DFA269D5EEF25CCFAE6159FEDAF83A4324BDD675FD8
50810ADC4DE4B612692B3573A2720E141D8C8FFF9AD852DC48B306AD599E8897
548A65813A9A7422F3D24CBFF4458783E6987A4C7E3FFA7A78005A11F2152DC0
F2070D8BF942FAA703CDADB5CE41BBF1866537F8803A31044C936C896891CB16
A0FC41A267B4F069C60051F381F1FE7EE0643B969F7E4726593F867DA71A0C46
E23E9010AF8C90151A7C680431DFDCCA8D218B1C48E41BEE854A2FCD697C2373
87F497B838B48ED1337A163B04A77F29968AF2B37B13AC45A1DDA792C3E08A0B
7237271B726E4109F6BA9589FEBB61CAB022E98F0672E7BF1BED3D734D6B6AA7
2A28387FB4723402464AA4C85161294D62F492347775C5B801AFD6132CC20BD9
4608218ECB710583DD5F5228479B293F45A85E2C274DEE681D5697C3D9057A66
C95DFEB061E6FA19661DA456F9AEAF122CD14E98CADF7DC72605BAAB5E4A5817
20430B3CE4B7917778CCEA0009F92C1A091CB33A16822D61C4041CD2C0A735BC
06B6FD59E9F7B7F2FC0AC6B25DB68CFE539CF5B6B1214F77A657CA2A8BD5CB48
69373BBBA6191CD83FC840F28EA57B5B9A80A882726324E5370EA1B9DB33D003
36DBA4EA7C22A7AF4FC47FF02A565AF9269841C4C64D46B7AE5A36BF7950FA76
A7653A30C62B1D9E58EC4D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMSY7
%!PS-AdobeFont-1.1: CMSY7 1.0
%%CreationDate: 1991 Aug 15 07:21:52
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMSY7) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.035 def
/isFixedPitch false def
end readonly def
/FontName /CMSY7 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 3 /asteriskmath put
dup 48 /prime put
readonly def
/FontBBox{-15 -951 1252 782}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949
8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D
F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443
E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765
424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8
E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C
C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63
868AEA25DA3D5413467B76D2F02F8097D2841FE9D089F27B314C2B7095381853
3E28E2A3E68DE7B53C5E2B54C6CD18CD68055B1AAA0DCFC1822C92B3E7D8515A
7074BB2C9C9A58EEAD4ECA2AD0A1E39ED3366B4883116847B50F8FB5205C1C4E
874D6FBFD2BD12BC8B8F2FFB78FBE95A9042C06401232192FCBA5246575850E1
5E449795320455BCA50E249F3A6B3E05DBFE7A4EE90063B3B2E4DD3AF796E1D0
C67E0BF8E170DC2F6951AA2AF03C420C5540CE6C3E9B398C77E8EC78C56E2484
03750C67A3A56FAD339582374FC9761497AE621CB4BCC32CA03519AF4F6B8E8A
CFBC4294B4C29FDBF70E8E7C85AB8C4023F5BC4DF5CD68568EA39035EB0DAA08
22F375B335AB79BA8F40C0CBA6BB93CFD81C76EC90EBC343AFE059559BDACA28
F8B53DEFF4514DC6168BA8B8CFEDFE4620F1DC96EC14C17EF09A33951C8B05E0
E11DC9322C94C921409515989B8494BC281E112E23877046D0CF5731CAD2D630
4FB525778C60063E3BBD612E886BE5C4C681854D76A56C3EA67FA0F728C44761
670112A9AC1A95E93AFC2E22C0316645A51517861AD7B0E257223108E1403304
AB1690CF0E2ED8283E448897306F5021F74F73211A992366753AFD14EC8BF292
7C2CCEE4EF61033FDF95106450
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMSY10
%!PS-AdobeFont-1.1: CMSY10 1.0
%%CreationDate: 1991 Aug 15 07:20:57
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMSY10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.035 def
/isFixedPitch false def
end readonly def
/FontName /CMSY10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 0 /minus put
dup 15 /bullet put
dup 20 /lessequal put
dup 33 /arrowright put
dup 41 /arrowdblright put
dup 91 /union put
dup 102 /braceleft put
dup 103 /braceright put
dup 104 /angbracketleft put
dup 105 /angbracketright put
dup 106 /bar put
readonly def
/FontBBox{-29 -960 1116 775}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
515DB70A8D4F6146FE068DC1E5DE8BC57034F4D9A2152A6B38BAEF33DC201A05
C8314401D1EF6AB12A61389ACC214E61AACCA6B38D58A0B9E1FB847902E51AFB
CE62D86EE1D33F2FD53457E35DA66C98A14FE772D8C5FDAB8D1215A83F1A4F3C
085A019B6D8F97B8656F14CEEF7086CB44645628A8792C52A7ACDDEC6105ACD8
481CF6048F50CB85DD912B1BD59AF297CA1E4E26AD6261C1402FCDBF59CE3BE7
75D640796826F49243F7C90ED1E3E67E8E58AC698B6A5CDA5C6C2F44D3ECF641
ED17C72896E82717CD4A1B60CB5E45C1BE076391109F266ECD42FA125C903605
6A4E9C690EE55283C59E4268EA4D1E3E69B9C027440DD1E16CB14F5605C88743
3D2E1C4D7E9D62E04D4F9D861B0F049F52FFC595BCA7FF9B54D30D9614112605
E84ED997BBB3F9BC6DB46179A682EAE26E75102E7FA61B266EB05495DEFE0955
EED9B1FB10D66B09A78F0D729C9ECB0510DB8595130A44C8943C888571F5D98C
9E430763F6BD2E7AD0902B070E17927297DB4E4F02861A84018D99A86D126EBA
428A475C2B870094E31414326D51926EF56BFBE0EC632D47EB74C1C5338C1436
4F1BE4DC193F651D80BC7534E090833F7535AA0A140054735821C98F60EC6C6C
880F36B4560E79A4C1DBB61F9EB075B7CA73243B12856A1AAE7A75CD2DBC65FE
0539B45412D3F76519C5E6CF71C8197E5BF9E00685BB346AEE0DEC3666B607B2
CA45BADDA66F4843C244365E24CFE26D688ADA3D6C193CEAC61F285829A79C92
C361E5BB50FC11AED3A7D781CC96026378ECD698E4766F3AB2606BDC60069B25
22B98EEB038799589ADCA66D29C3C50AE68CC7E9CB61B0B718046F130AC20D5A
B7EAA82FDC47BD7E467A8C4ECDCB80F1B2B8195BB3BF07666F383B1EFE969C31
DA73E589C5E8FBC0A37BDF9A0A6ED9CC8D0B40168C759FC540C2BEE1245530EC
E1EFC525824933F1A938FD3A16290CD7CE8FA60EB1BC7BFBBAD921474A423D3E
83FFBE373D147D0A45277A77E51479A1415B48B6C05123615578906B13FD3FDC
1598531FD83C89CDA1991CA6B37AF4849708EFD3AC65ADD7AAC31DA9B75142AE
DABECEB78B994E928F58861D76E386828B4C3ADEF7C5A228192D1C5217876950
4C621CC44EBB7D96271985A4CCEE3A4361812962A3566BC9B3E41328AD1DF5D2
042B45290E79330C54F75C41AFEAF1E571525CC5980C6E517B8E48821BF261B8
CD8B92FCB58CBD3A5E066BE42EBBF1AE43B4EDAE89B94CB38F862258B86DF245
9FF8401C1E8C047D0BD49DC51310EB428ED134A37F07FF76841B086E474A86DA
7A125651FBB766E0C8CB87E4D4177853D1F2CCB678D84A6A66BAD7775E39296D
64BEA990450489AC1FCE1D86E8BF0909639BD770B2CCAC3E1FA9F1B7F89C3C93
05FCCB3FE53F9A0F0313258904E9C4733DDFE6EE37ED12B6D6345CD7837E2532
3AF45EDA48C207454D1A89E574B39CED7389A1670088B1BE549C88F58669A2D5
1412E6466C34004CB30E0795DF4FE0F1415E376780244FBB0300A9115533E296
640F90F579302D5EFE75DD7DE737D665FCA2A6C0057E59811F2C862FB655FF00
5B73DCCE1DF772DA229A8D4A19E1FCB902F94189E63649E85B753983ADB1DADF
C6A87F81CDC844AB3B7FE0E5D072E36D9527888E04C56BE1F5AD00AC28A7427B
0E37D1BB3C5502C4EEA906BE0F7E2AE23B62D97474D35FF3BB79F8D68E08D7BD
83EE1C6DBBA675B8CE331C2160B4B76D21FF51452E69B642F8181BBF536B01E1
EAA414A6814CCB8A9A0D5E3B103C2613F27EF0A96E4C46F874EF6C72836AF071
BC1C1B919AD276B158187EAB524ADBB1363BF71ECAEAE1B2019227FDFBAFB888
5907374E31AC86AE4802CA69E8F2CF83E4564CCAAC3A9CF11FE3E3D3ECEA229F
2CC9EA53BC519ABBEE2B733D2DFCA58DF56D038ED7150C4FD676CCC68EC60C2D
6342C25DB83DE4D7D0B4F35653D02DDEFCBA7D5AE1B2D038834FC7BE753853E9
E4025313BAE25172D26DE5634DF9AF7018A85AF6A90A86C579723304CD8F8E9D
6EE46D21830F175FC597094B26E5A98F704C45DB95EFE2A3149C99F13A725B43
C774A55A550AFDA41C1A0DDCE7F6978AF811BB2775252D0AEB8918B23AFF308D
BA5BCA2DDF98E2F4EE3EFB8F5E397159F97AD0E2C1B9B6DB9742978F376A49F1
CA7A3F2C6089363F9B1302A221B70907CA1101BD0EB286350F99C11BC7EAD118
362AE0A1840F4336D61BC7E2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMBXTI10
%!PS-AdobeFont-1.1: CMBXTI10 1.0
%%CreationDate: 1991 Aug 18 17:46:30
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMBXTI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Bold) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
end readonly def
/FontName /CMBXTI10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 46 /period put
dup 97 /a put
dup 101 /e put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 109 /m put
dup 110 /n put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 122 /z put
readonly def
/FontBBox{-29 -250 1274 754}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF
E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207
BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3
3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2
F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707
C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E
BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632
2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1
879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D
141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF
63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46
4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B
FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD
395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003
82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1
763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019
165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E
57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED
E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5
178DAA7F17608118E3563DD02D74E29696D1C285E9C149F6D7639D7C80A809C0
467D145F4E6AF1FEB4B61388E9A0A399AF8B7F8BD329DDFA57AAE84EF328118A
00C6D12ECCCBA48D18BCB3D3F96C8017C09FD01047A1D4E7524AE4ECEE9B3593
0AAA7EA6626A73EDA992ADBD8D503117D6E7B3B13DFB79EBB7838F23A9BD3CDC
102A399F4768D41A946D2F3CD0A2DB3BF9B249BB055DC69246F78E45903BEF33
87D1656392EE0815AA05CD02A7A770EBB0C5653B9A5DC31C6A9FDDADBF041CCF
01C38863625C63BE4C6F41A5FB92EDF3F74F839FAD86F87778ABF00BD7E97431
F9DDEA9CAA906E0D8BF3F5A297B712C196189037DA0BB6683993F8A01F4D1BA7
0A0B0C0C38610C806A355D6CC66932C262B420B3CF5598E75B2389F3B7381930
7E3755AC7C2851E361BA37B3E46F9635BFAB071B3906856452168CF25FCDD73C
EA55DB91E358F215AB36F8BA00758BA92395EB068A84ED40A4B0BC732129F7EF
0396667580C9F0EF922CAFB74A696A8BBC6D48EBAD2F651A6C599566F11646F5
D48EC84ADC499261E5D38F9224D264A7239BEC86BC1147D64D2433919F7F2578
878EE4721A6C8392E5C4DC973B2FCEBD69DD5B76CB16161E28CCB4CE2278FF52
3BC8610CABFA3FA712EEE4FC7113436367B0B921BBA229022EAE6ACAAEC5E292
9A8BFDF015AE2BFF439B0F39454829736C90D17CA7BC2D7CED95958ED26E89C5
A061B6E6870A38D878929F5D51B5234ADEB9F7F60964C9A7E48D909D282AAF95
F3FE8439077DA921BD0A4ABCC11DFF74822AF1B961E427E8431EDAC8D8B8A71A
4F51149C8586769BB441482B80EDA7C1F4A0CA843DB62635005F4E64D481569C
1EEE262FD36C134AC6FF81EE65F39A27FC38CA5A4A41D6009830ED5547787623
C1141008FB63BB65436D4145B55FBBF0159CAEF36B0A442697A8CDB4232D0B21
8BBCE4EBAAC6F9FE092658F303E6D0E5059ADB99173A7D619169CA73EBB20E11
FB33D62EF70C880A407E9DD6F8DC25C2ECC778691B1B840317F40ABE4EAD0BEB
4D3067BB6FE79013413A435F174F65DD3BF0A6F14C27113E27EEBF3C59B0450A
70B742D7AF864758D5AE3B90A72B204F8A0E10DC187F49F4BECC8D71EB11F260
084B3A81468AF500828E49B60B8D62C536FDE2E64456815B535A510341613050
D7B87C5A2F561695C8FE1B5CDED77406393492CD9EC38689BDCF4E6EC7BE59AD
993FCD1EDC7CE582E2663791CF6B66E5E539ABC03D8A4277B21D056E36E099A3
3748E66AFC14668646CBD881182A65D98727B05F560D13830D89B1DE9E5B92F7
ECC6DE77B4907DA7C69B5B1A08DD78E734A66BA91FF9BFAFB2E1DE5B0F5583BD
6BACE1F10EC6F881F6B3887B2752F6529C4DDD7CE07A8F03802E7441476D92A2
2BAE031FB49283FB56E1A94B0C848D6A7FD17409AE55D318A1BFFE8F90E05E55
7C52ADB5B15D26CD0E9A5C03F716BC0AF9E213D64BF06158BD4D341D84FB7D0D
028132BA82F702795BFF479FF7F51A99D0BE1AC0E862019B555B5799A0CEA0CD
125BC15BA48DC8A1DAC44780BC8970F3B0B53CD4C5AA3F526D0687FE6E044F3B
49E1F39127A649F67AAE22138125522B9D96065DFB060D9AEB908A0BBE3CDF8C
816E92E261D09AAEF4F4B0AA27A2345175728E89EB511F73F4BE36DAC54C909B
32429CA8DE17D6DB991C958A799B7973801C297BC44ECA8E420084F79F361407
7E0294DF8A10D38C09D555F2279696CDC08297BF5F7B7A0026F0A12317824745
A8F53B39E11B2AA1BACD0F9DB7C3BC79E549447E1DF4DAC840AAF98A4385974C
B1A964E411501D128B0ED7494E58C27D7B479A1246E36735EB2B791945218648
1A0CBB8EF7B596436FFDF65E34F71D7787B7342E238D88D99A05DDD062483AFB
19536B829D721E9E7C604BD95CBF9B07C0EA503BB9EB7D9BC4C149B57146B5B9
48C288C4651D5DFDF6573592A77D0C0FC163C5F229017500DF63D62435C2A92B
E40325B239A9513D66BB4D9BB390E21EFFB4E019DA099F71C40ABAF214B07E47
52322410354D7221E9C096B94C0179788F0F6A823CCECBC3DCC620CB06F7ADB7
592827BF4FB5205D4A5B307FF6243EF50C29A66344D7A7A122B3A76EC9A691B3
559B2552DE2F33D447D6868E813880FF02EB6F0A8F51E1EA63BC031D80478F1F
66D611E9144ACD5B7593EE1BE498656ED02BBFC28874FED8AEFEA2FCA6F954C0
7922A0783577A7E8DA06D74D018C4B9DC2927AD9C21AFC8B267156011BCA533D
C6577447C349015AFAFCF649B6AA5FDAE4C09FD8CF14C2B080723AFD52E91F54
611C6286DEA10B0928D21094B0B76956250784CB0278AC6BCE85EC1A17E270E9
4EF14C042EF0C1B3B54DDDA5C3252C931175C05890C71A173EFBCE0793D3B6A6
E2D48B61B62ED55C32B487BADC97D5EFF54A622235B87E2155347256A000B7AB
E9618CE63E5EDC34EACA261AD4ACB7CA6A21C2C5A6D4168DEAD5B36FBED12A5A
729D2A167D5F1E95DC4B28954B578E74F9DC795F181DE04FDF2DAE64ABB1F4AB
6641A2E6BC5028013741C46D6846525A9334BCE63B90F9D26BA7C7AA8E58B916
1B7906925A6F9C1B4771159353FDF7EFC559B12E259129CD51A0E16348289180
F009AC2B4FFFD4A07F718D0FAA112A0C92541BEB9985FF672CD1002E99246B0F
2D058B4A7F8ED6CFA3228B479C47C0EF38571D0836A6601E422BCA97D08CFE97
DD8D6AED32E133C19B22FECCAE752A10163BF5350A082E915E0B2C2E39BF3362
5DDF6A0507F8983F2CD763CE1DCC6FB9551DDB3356586B5185DF78A17DC159D2
0CF0967E1052255D7F9CF3B46E4CD3F40FE74169D5E6C054298EC5FB0F94BB42
818A3C8075CD50AF13F1CC47264299E3643A9A9AE7C43F2E56C828ABCB7ED48C
088A1705DDE930023C8CE28D9D743EB14A4945B31263D6522D2765A7F62AA276
44DA9B232013190C1C346954CE00EEDA6AFE896DD96B0BEC4E5DCE6D0F27EF81
AFB6B6E7C256F94C289B1C466FAEBB73023F300BB29A90A0F9332B76D6A1CF2D
71902FEDEBDC711179681601B3BAFB1119705D6B16082E4781CD3569B0D77592
F5BEE79E417841EFD2995CED35C6FBA337F90462DF6751ACAF4A39281CA6E75B
B7B9F7A830EB49618265D76C9550EB317D3FD8F51043C0F95B1AC395405ED8CD
6695E82FFFFD5EFDC1F00794041F879256C175530B85E1EC7EDEE1AC7754C311
C36449F049D86EE1E3AB196043B32ACBD7B6217EFAADDC266FF796D9FB691866
E73F4BC3BFCF76907BE1B506CAB4048EEAAA5A7933FB1E77D4BB5ABCC5CB4665
9D26B3DDF35E3F5A841F1DBBC4BAFB34A1B92C17A566A11264CD516B461BEAB2
3500BE17D31402343CE460FD467975F1A865E2D88716A64982B3CCF2ADCF5C07
579D71421933E822D3BD6C3F0FCB406659F94C114631C202596F7ABE1F37EE54
C82BE0E683EEC6C2F83ADE47574EBA0D071265AF28EF3A0CEFF9A3B48EDCEF45
EF8D808A38C8B1228F39D8C4F81525D05E6B5A322093CC791236B543D71536B6
1C31D4190EE1B14E44365C39CA6C00C3E395A133D846C75F3FEFB89DCE6137C8
FE524BE843BAA5532FA719B91900A4089F6963B22DF647B42A74FFB16DEB475A
043A760FC38850D73E6D9034DB2355A8AD3D8D966648AB35C69C5F1C9C074EA0
A401E300083F472C627477C0014B44A976A8DF5DD87E6899F0A577FF1EBA796E
BAE930ADA7CB28DA7E961F00B3C98B6873E914ADDC49E52C6BD1D44D483F75CA
3A5D3930C8716EFBD56D57C54EB0B7A647E03F5B6D35172ECD5B960533DB2630
AF88524A41AF59A2853E1AC21A48FADF96640E7B5B48D8B4E20048FD2BB78883
EE2FF11E981008A4FB03AF24E0076286A608E9B7A59316CA9D225852021D2CB5
E11B01A775BA1309A0C8B0FA1C2575D7791B0F9A2D7838CA6AD91EAC29A8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMR7
%!PS-AdobeFont-1.1: CMR7 1.0
%%CreationDate: 1991 Aug 20 16:39:21
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMR7) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
end readonly def
/FontName /CMR7 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 57 /nine put
readonly def
/FontBBox{-27 -250 1122 750}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A47CD4FFE5D78
D8A2086B7832F31FAFBCE07443B257F84B5C685605A959C3212EA8409F645D1C
2F3AF99B07AFA0C250B6A38E434A7042CF730BF3F427C5974FFC7C8B79D4DC1F
DF3EC18A602E83003571E272FBF196CFA3C1C2FC021DF680705272A253E3B247
AFF32E4293238B3F3F7C7C323E207638042D2284D0EFBF81374FC436010E8007
A93DCFC2A59C5437E70C548E68F7494A1F681D7FA14120D8904DE08350101A1E
6E1CC7861ACEAD7FDFC2557440AD9A6FF4D8D0CAD9BE021643C8EF0BB58CB32D
06C22E2C54E4978F23B11570987A533B7141526CB92411E65FC22CAF9244B384
411FCDB0D9CEAAF506650E4AA06D912C0E140777CD04762DF76A6E02A8778D69
10B20507F962294BC46C9B20A532FFFB1741DCE0C49574FC1C50369966C6C9AD
4E1F7D0CF50B6442E6BCFB3E8C8ECC125B420D95F4773E01443C27C8C4DAFA94
2C437B787B2EFF2EC735986FEEE98DB3D8E5F5EF769C1D1CF98D77560D42260D
3A6CA29F564600BF265E615FA8DF5FD41BFD67D20ADCC108C4ED018ADBAB06B6
AB2B93AB280C0E6A112E8F833E68ED531628727DF240E313865852FB870595CC
AE01FA7072BDA93BA68FDA93E0C2B5EEFD6E01F1795AC969039E57B7ACC192C3
0A171849D3EDC3721019BD5EAF7BFC687D3DBF565D4E7C05709042C34A12A527
3C8C6C2352D6998BBD6CAB91E621E3DE424AC76527A039FF06178CE957FF242D
70CA2B1D5C32895DC4822256FE9036274CC637541B5F2739F87FBBA6D723C630
59E8F61571E27A52365CA54F62264C86022389178A24EBE358D6F35E8E76D693
6A58F7CD58964059EE37EB5C59F6FAD0E549E987669C90AF082C688EF8FD2CC2
21FC32195129EB0122C80E5BE63E5729950DCC0493B063A4BEBB559608C8AED3
10251ACB3EE8B458778E7EF8823E31BCCEEDDAB95E48D94661049363E355D2E7
7C566F59619B89A0415A29E6B2683F0FDDAF7E31C89806A5D1C4CD1BCC08DA6B
1EDC68155BC9FCFD5236024FA2532F53A7223CB5439710F20D3E14BBAEB15347
6241EC439D9051A44F13E7B69EAD8D7D94B3F7C7870AC5DC60CB122A84AB46C3
21E86754C526D8F823E6DBA4990911E9BB83E41DC5EDDBE60B1CF1BC349FCA03
AC6C786AE3467F1E9E9D0D9332A6A4D1D09C7F600421B4A929C97E087BFAD965
9F0DFEE35AE37B41F720E08D5860966076DC75EF81FE3003F7D61D33E1A94BF7
9F31DF273ECAFCDE795E5783A528173DBD04A1CD203D75C247CC785D452F0C8F
A8B68693ADA4D3134038F0377BED0ECD8AFEC4030F8424FA9D18E9AC13C22A0C
B9E9580DA435051E6020409895A0081846331532A34AECBC41B3AB026D487F02
180D482E1E3414E27F95A14F59052E047EDDE47F2A396570FB3DB8AF28A87DFA
090499D66B429665CEB03D423F67B230B2C88457B318A8D4EBD199D410F3131C
7B54381DB9C38C352B7399E786F73D354D6AF66BF3A2FAA5A61BB4C984DF46E3
C98003E3DEF112C8FA8013682B135038FB53C9C67257516277FF004FE08C427E
278F5BCF72FB6528C0C4893D7BF38B0CD5AA17013FA2118E3A535AAAB3043FE2
59C2DA377A64D67858179A4D3EA13B7E34B65D30D016BB0507C4B2688EB49AA6
9ADB758167B244F9EDCDECB98983292D39A617AC568D25208F9F1C7D3FADD881
E17671AB4FEC8E8F0FDCF3DC28B8165B2B8ACE63B1CC991350AFFF2B2D3FD1C7
936E4B04A1A0B98F5EAAA48B861D7BB7BC6073F4107F7A8803D17E1FBEE314A1
622250B240FF9561D6F463133483262AE567A6D97B12818C3283656F7A515E75

0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMTT10
%!PS-AdobeFont-1.1: CMTT10 1.00B
%%CreationDate: 1992 Apr 26 10:42:42
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.00B) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMTT10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch true def
end readonly def
/FontName /CMTT10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 33 /exclam put
dup 34 /quotedbl put
dup 35 /numbersign put
dup 36 /dollar put
dup 37 /percent put
dup 38 /ampersand put
dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asterisk put
dup 43 /plus put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 60 /less put
dup 61 /equal put
dup 62 /greater put
dup 63 /question put
dup 64 /at put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 74 /J put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 89 /Y put
dup 90 /Z put
dup 91 /bracketleft put
dup 92 /backslash put
dup 93 /bracketright put
dup 94 /asciicircum put
dup 95 /underscore put
dup 96 /quoteleft put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
dup 123 /braceleft put
dup 124 /bar put
dup 125 /braceright put
dup 126 /asciitilde put
readonly def
/FontBBox{-4 -235 731 800}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA
726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227
CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B
7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7
7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9
EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6
DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437
ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53
B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7
48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081
B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B
D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943
A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141
E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A
814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575
C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E
EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D
11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF
DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE
087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF
87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C
4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B
C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897
ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD
33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04
0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C
E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555
A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408
637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC
B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04
A2D8AC44DDE818C4E23DFF5B846F412C1D28C52DA1EC7F6B68D2E63E6586EA41
0B01DFF80C744F65C069047200AFBD969234842863A2CF78DD48BC0BA686C91F
3B1382C42DC044F539B7089E055DDDE9E76F7EC4A120B4D8D3E14FEAD686B0F5
3EB80AD386901D788C51B61A9C04955BE06E75B24FB77F501D9937DC244B7446
60E9453930286D8112EDA6EB6291C0BDB909AA3B3EA0578815A4CE3AFC9C699C
54C86466BA0F2FC9BF260DB773E29B2D4AF20562C31E83E45950A3A777E06C18
0F29343F91938126514FB2B4A81C98E9CC420F54C8CCD614FC7AA290B7D42FF0
429259B32D92836F4B71D517C130240B63949875D2423339FDEB14B1F1FEC58D
49BC8B826DFD0C2DF5E94A4B4088A7E4029EF2B97B970A53A43F0D280CCDB41F
8F9F3573F522404F634212E534EF3B2FA648D9BF218BAFA1135F6800478D711B
9E3FC435C0D12C845F0B3E77DDA804A75EA9BE82DCB9435BF16A2B94CF7684E6
748B2BB7C5EB08C5728DE734125E6E48B895FF3483E07558714F68F2FDC0F4F3
D195335C8216499611CF9355764266CFB43B77B30E90BA64BC8EB301B5E2D060
B1C053E8071EE600A76C8309801C7927F77D1FF4CBBDB83573EAF13DB5588412
23B6F8EF8C388136CA0BD33DA6043043163E34E1B647A549136C33DCF3A816B4
BFF8424CBC2C9EA6FBFFD26B7789815EE0D3576FB50A3D0D2101D4C43C0F67BF
16984BAF98F16F7652BD26329516CF3979539C902F5BB43BFA0B1DE623E26CA0
521BE8F6908E249743D1F7E62350986EF4385E7E617B1EC50F7408CB18A0352A
9CF70E0FC30958BD6335211756B872801AA86C2F43801FDD42BE49F16DD74849
40E5F5FE77FF2948CBCC494E3D9259938F26C916EF34919924CEBEA9315B603C
5D618FEA13211BD46B019852FE26E305A4EF2362536C9FEA7475769262D3C2EB
E4E5C2334FC9E57F57BA7CFB29AD573D3FC5CB5781419899DED8B473385280A0
B375271DC9550455D9AFE5171CA247F90902D62F65F84D05B5F65B8BC80376EF
A0DA23DEE61AEE96577629DA3835F2D50C36D181D714E5CEA92198F4EDBC4A3F
17995EBCA8A6B3C86EFF6EBEA1991D3A3BC2EF33833103F462CDA92BCA15974C
49B3F1E7D585E056666A2CB937B7B49572A12E9953438F334B727200C9D7A86F
F995C454EFA2D0A5B6043E85A5D282F6C6CEBF5781A59AC4DEA90A6E4F2BCC54
B77584E08B6FB01CD73D5BAE1AFB220EF723C9F99F0F8ED7EA821FF9BFC9D57B
1F84B91A3CDE5B158D3DB7D1369D51CD9A2822D4CCF0DB935B56CF3A52866394
0899E7A965B08BB808186D885D12335BDF0095C476462297D3AC3BE208B1CA01
54CF223348B87BF3472AA2966C208D7BCC2AA07BE712AB448824D7DE9968C6F5
7B6C957577BEBF7EDCFC01EE0D276501830548E6604D50E4C534CE727BADF7D3
BBEC9CE7E326DCEFF2B5908BCF60495C7CD9E47448434353363A82096FA9E1F2
1F8C780C4917DE4EC79CF95A42CD2D15E3D51BBDB9CD624F9C358390748A9A95
5AB4DFEB92EFEF7FB8907751FA44DA024FA91C6C064B5E61069B2796590202F1
2DFF657471BADB7A62F2ABCB770815750378DDF973CD4E11EFC3D19C27C02171
4AD74C3CC0B96793A7E0EB9A0AA40C7A6D426100FF3FECF3E3CB60ADA80DCDCE
870F74D04ED5B167D965F8AD2677298548FBD803C716488925CCBC9A3C515D3D
86C03CDC708D2F95F403008963361C8E7EE7C5C62C15DBE6B22C2CDB249C4445
21C8AD0C014BBE4B28827A5C84D714327904518E36EFBF4356DE0750B52035E9
2E06426EA0395C4852AD2ED3129F4D43E3BB75B546F092C1E7CDFCFEC2F00331
D9D0BBA5D76287C4CA7088332D5BCCBDBFD20B7A07DC6619A4AD3894C699B01B
045D803FC5E36061648DD13B6BCD95844E171F4380CA89F7A7F948715630A623
DD5E011B419FAAB28B814DAFBD3DA2EBC7B6CA635D62145E87679FC56843AC49
FF421EFC70F30062D749120D1C492EF1070EAA096E283CECD8411964DEA10390
147718F191A0A786C3A9862EDEE74767762BCB27D5621A5562EE1D22BE784FB4
0BEACE3F8A806ED5257A038C8DD59D3D52CDB4EBC501C13CC9DC9BD89A51CF86
B6C3F769C470912FFDA75C99C2EF55D78874558397C923C330CCAC3C149BA314
C6CBCA464B176721E9C04D0C08ADA8BDEFEA62E3231FCA6A646F837115D0F479
E51C7E509BB81045FE2F3DCD4A761E956BAF0561BCE5A0D20C0F1C45F40306B5
B6A834974281675F2A33F258B6BF7F7AB717FB72A96C0D50DA6B6E4D3EDF9416
6640E77C36BC882A09024789FA969E730CAC7948640EC203B610D8B02B0E8897
6E0395D5C45E7D414331145412115E3DDD7D137716192A10F8D1F6E134210034
0AC5572B33F6FD9D2B95D7D62D12919B23F7CBF114A5E1FF5C3C310CB947B914
E7729E00E22E2F5E4614CE226310306FEFA46DC9ACD671478C026A15FD6668D3
3562902F13842676E2A15F813364FBF3751A6BCA132596BB02DC0BCB18463F0F
28C1A0E1DD23BBAB471ED0A91788353A27BDB2D3DF7F547A2E401DD536417F74
5CF1285AACD4D96642200201BAB9EB201272A1D102FA7B4C293787CA1DB59847
482B209F980BA3107F7538C5FA1CDC5DB36C5F0A7917FB0BF90F185CFDEDCDA7
3B1D584F43CE6CFC46EEA3907B6E81BABC903DA628077D83A1F18C291729A92F
77607547D61D0CE06750F927EA4F37AA39C1FFA07EDABD3147228D161F0D0FDA
771EF1F476174134A27076EF9AE92D3F6DA91C9568C0E27BB954E27CA09345FD
2AFB9150ADB7AEE906AEE84C5375F25C2210D3F5A3C57298BE1B6AE3CD38DEB2
97904795D70A9F2082DAA0C6071AB9E8FF71508AC77052A242DF4D01C9139805
C2F5BDEFD7BFA42D3B3335332B37983D213B6F7DDEA6217186A93B911DCC0FE6
42957686973CA3E07AD6EA4895AAAD5D5CD878AD776FB9975EDC7EE3934EB131
37EE8F063BC1EBC11D807BEE136A31A70EF2A46B36D99B98B8B1B933F032FB54
B9EAFB5CFED5D813488D6A28250605034BBF2BEF55108CA0D6FF94BCB1650F91
99071E1A1B3B2F1E8E7C89A5E4DA1F77DBF6AA289D331C35C2C2BFDE4A391C6E
FB679CA42BCB2AF018303A3F55EBD657AAD46815B45DD067823B4BC3FE3B4245
C9940627467C5F9AE0EAE53CB7CC118984272BCC5E1B8548494E812676FBCA78
A70C417C270EB6E435A6A75CAB4AE742B1194E3F9811A7B581D9C552A3EE5B1B
98E997DE7F74B3D85B46825B620B19357E4A7D82AE97C3B85609335B1B41A532
FB2F53C79A4064C88C84FCE693FA6EDB086732B6F76D31F8A6FF27DD850DD1CE
B9C29258680CE73A371B3613F17A3533C5EF5D4E3F833E563E976FD58B381643
F097AD8D3BBD1E4F0C22A79F464FB1168E6B12E503DEE9D1D563B6F9B5A8D6DB
D1FD6BF4A90DA086275F7F7AB784F8F945569601AE0499EFCBC5F5585A759D09
6829A9649317B8C53F66C083170EAD52494006623FFED560D382CE663A1B4BC0
D68B544A2D3F4AF0C1A6E50A4603CD433329F379B960A2E6822A381D91DADA65
E5D973E67820C6AFDFB917126A4C4C7CCE0C00EA9762059E3BA7C3BA56F739CA
2F89F58A2F058A78FA9F0F040A8B04B77F300343CEFEBF9357243118D9B62B83
2EC312A4AEBD8BEEDE4DBF3CBA2F574BF9AD66B43C19615961A00D70ECE67C17
6C93C248AAB0D3F9580ABDC833D52A5BE4A5C7F06C12E934BCB99C8D484A0CB3
BC75FE276F26C6AC861A17CCE8EAE60AD5E4573D4DC2FCE59477702AEA956B2A
0DB471C240961BF1402F6ADC61C3D7B72C78145B5FEB9853485C862FC428BE26
F2FCA109EC1D6F77284C5ABA95359FDB4507D921934DAF4EDE1A1071F7157982
3A9799E17F5377F27700EE7CB253ADB2371B228647FD11DC38F4FCD9D75ACC96
D6B5508773BF71AD6B9D49829D6872CE8271A17C6FC89994159850529D5A8A32
206A8BD5E688D5AEEDBE8E0195DFDD5ED07D11DC54131B7E22958959CD35E529
F9DB957C31AEA4F25811C7E0B9ADCBFCD7AE1BB84D65C7EB2BE322E245F50CE9
D611E6D52493244E89003784149E23DCE1624930D53B937405064775D2CF8103
66D2FE6F360D5AFF017C7CD773F0303CA4F8C9FD08B91E414546CECECC770884
87FA3D4EDA2E7D8474D5C30EBF966C9F40F4707E939C22779BC757DB50E9BACA
80E0AD329BABE0AABBCD5C1C59E80CF55E63F84F49FB24D5F8F953D028568083
015973AD8921C03794814AF609FEE8A5466BB982A15644C00BEDD08D351F661A
AB6DE4FD2715935A73399ED21B074120B214C8E6BBDD346CE84E704A8DF4EB4A
73C5ACF8E106D56287BF82A4C04C8AD092B9643CC1512154D04AA5213EC06B2E
6B8A5452428EF353C92B18855E9C7BE2BFE82B568AA0A4B620EAE77EA0D60755
E78C6FF41E2503A3868195127619E97805A628A0348CC7C92C3EBE700EF008A5
86B6B5736A275BEB0431FD754D9866829C9B8218552737AE357B6DEB6DE5B17D
5D86DFE33C9A4C93CAE5DC1777EA1DD2D810FC772C8855B4055A1B520BB0EF02
9B1C32FFFEA106BDE7EEFD7C05FEBEA882C2FE39993EA2BB7CB9DDF009C08642
B3B12A2752F8F6BDFDFDF83B0F8648C309248AC9274C823CEC96A0766C58488B
EF98089D39CFFC48DB5076BC1DF598C450E76E32EAC21E2A63ED2F4CD9BFD34A
23731B4BCE26D3500339CE43CCA5FB9FD2CE1BF78DE258A270490158921A8430
BA9F37EA3BAE30895A57D8BE8A3DEA3DA9E35E3AFB9E650815E81F9252427FBD
4B27B5C81F4F6D98CC7B7E289231FDEA58E629C4A414C5635B69B7ED30BD3583
2C0CE0A350FA686F91C11AC4EF37F651FF61BB9D087E42A7ECABB2073D930C03
E206ADC510961C03634984D380EE3604635695DB7B240CC9D60E31E684867FB0
C7AF5D477F96C24D377970A9B0431780F0EADC1FCF162245EEBB2C99946C28D8
E85A85CE650089EDDE2C11C224B3BBC65835D33D25DCDE8C9ECF38FC58D24972
EB715C666E5598E6F6ED4268BBAC9F99D725B95F81B3A93EDEAEA3B33EC2025B
C944E72BDEBEB532A01D263064123E1514EA9778E34DAD260C3EFB820E9B7B2C
005FB6B60E44782CBB9AAAD0D84E2A7FB9B9A003B2E9C4BE6528537B909FA590
F2AE7CA038C6912DD59455C76BFA330BD5801BB94B2869F9F4011DC70BD31FEC
A18F3944CEE997E9D984425D95C28DD02D8E0E0DED0D1FAF045C6BA250868E80
730180003EEE66D87118E677DB28B9F54AEF115FC1F1BDE48DC42BADB2F70A05
0112E3E69AE8F24E90D2C020131BCB703D4BE761B59237786AA2565B1FBE6F13
66F74844A3B2BD29F9BC483BF9931838BD701F8FE96B0751A3C2E93E326FF14A
037BED6C2D42D93E06082DEF985E39557D9A0A607D5DA570E084CE011B3F96B6
2F3633344FB5DEF35A48F468C019A9A881C036F095A4516AF9289085217C2556
62808AEB100B2D3D049629C688392CC8A62BBC7494881B5F64F71F6A280F86DC
288C82510A59277BBC18751679448EFDDB168F3BD63947E6C96897DDFF56A60E
747AF59AE10C996931ED47E0567A0FB1EB9C2A7F062E04CB75174E05D9571D1C
FA2EFBA213E13CA73D9FF1CC4661E04E4D1267CF8E792F6AC270F03C38B7DDFB
9155F17C13DC7EFBEDD541AA9FD866F3214FB78FC78DFD68A4B8819144D9A28C
DA70DF8489B06196672EAAA63953DC4987FE1BC025CFC38CAA8DD29A19E0B007
F99DF8D4D56FF048A53A5A4919256A3918ED9C87A681B168120E65E24EBA3060
EBB79FE24DBFCA590B47A732B5A84F68392E5CCD7F0AAF8AE46E8B2F7B9B629D
984BE10229CE058AEBF5A5625F3EDAFC37D75C087BBA244FCDA5C6CA4D02EA1F
3F64D397F84FE2AC9ED7D8F03BB56BB25DAFE7E691DC2F7F42B82B79EDA8111F
B98941BF10B58EAF2D86FECA8239774A6AE2AF22F8A4103D0CAA22ED11E639EA
899DC81867C0E3C42F6FEB53370D06AF2975843410C8114F5C1057D53F078FB5
96E572702A18C71E09DD607BD6CCCB2CE9D3C84E9D626CE715805C0697204A81
DBB43CD0B952BCD9EADA1FE80EE1E24B1C328FE08783FE66C8A1F615EAF8CFAA
DD5A57695ED5BF8866603CFCB4EDF22FB010CE429278CCCD13B39C7AF2135FE1
DEFED11CD2275ED4C51DAE380DF3CBD87A5502AB213D816FF6ADF4BDFC53F18B
1BA97CCC685B11BB417FEFB94140FCE2733949AC3E2E1D25BEB6E6D2E5D83144
463283C90090E110280FC2C220DA957E4F74568CADA115E02BA45417C09CC34B
EE51F2452A50D20A5B8D532C283E46E6AFBBA38DECEB61836673F76E8B20FC0E
238CE894EA5EA7C7D0AD342F87831DBDB01586AF952CA32796A6276B2AFE3269
0A26B0D6473A5FBB2A7FDD47EB4CB0AECFE2EB581146A37B403EDF0E53C2F969
450DD44BB534B0D1F8161CB2B04FBD5FB691FFBFF6AEA8664FD8F776A2C328A7
30E745E7F8D46289C8CB4FCDAF7A42371604E47AA073B7200173E1D0075A7895
747C48506669C5FB8EA2EDAC1BA526BF2A3629C7457CECEC6D8F0296C2107BB4
AB5E3895B2DA8C0B2DD14E756EAE39CC14480AC37EF83226903389C6AE3A4109
C93577F97BC888773C24DD888767B11C9628204AA55DFF463AE17936E6BCDD15
F93C818EB1DF9F2664B1BC06BEEFD54A913448E69BDCBC969B7653B868D54B81
8934B0E26F35BA405917D207E2C02266F89261C2566261D204DF7BE4E4FD30F8
E5914FC6956A02F641A478DCF80C02A2B42BA2A326D2202673C65647475460EC
99999A568C1B4C259E3B7A16B741004FF2901AF4F186D02F44B0C6D3F53A6F5F
B4066C137C8687ACDD32F7062884391D6861FF0543A377F06B4F85490F096A1C
6213247A6F0C7DFD5EF4940ACB1562927FC7EC5FFCB07A393CBF6FC21C94BF73
453B75ABAD9FBEDC164EBAA111108CCA28F219C0003C488A54BB9B2BF0858419
538058DEBA6C22CB17B7786C34D3F569B42D7065ED309A5AE6F8D457B9655ABC
BF4AB6BA6BA1EB95AFE3CD45B37BCAAD8A715629142D9D1138CD3314CF2E777D
BC790A63DD1B724741F23B4D3B39C2D3BED0023BD240C19E129B6CF5741A6ACC
D6C0310DF5A560D7CA26AB6AF212131073CDA02C770A275F7DDED8C52D673019
AC4A4D4F036F94FBAA1448A0BE735C2CA1193B0B3795B3B4AB693C5B97EE0DE0
CA05AD896B47D71CE613090AB4B0F5FAFFAC48A7F52EC247ACC0CCB10A9DF052
6D19E742A514CCFD71ED7EC2C7D86118990C93748459293FD21BFBBA03C57C59
18572EAED78F8E0A39A03A7C8C1ACE30AB791FB6C477A4B74F21DBEC1DE8F611
B1C849F0A01F93C4E1D76F5E0AF2537624C2A263EE163734F71701E05D77C1B6
AD220682785BDE886373582908664529C9D081667C7354AB745600E3A610F672
53AF7D1DFBF502594B2B50194406F831251EFE156C063B458BD4F42E7DA02833
23CF0005BE43376DECD1A306F75261D6248A6DEDF5F56AFDC8CD410BE0213C4C
BB9304DD363D0D60AB2B2D645A8ADAFAC099847344A7C010CD16E61236DBC4F6
D9EA4FB7563A01E3F799123FAB7977699D1134E49A5E079A69D8E9296A062F30
2F163064A215845D0D65B815FE0082852CABE0481120CFAA3B687B32EECA8F62
CC327D1D7BD071F9945AB8B9539AE8E8C5A717FDA594DEFE8511BBBAAD08D7A2
4072A4E4ECA0F3EA8FAB76883439ACB4727A36DF72DE574418B13CAEB099E9FB
466DED499B8E01942E2D6F72035222BC90E6BBE16ED4FB2DBEFC64CD371A6FE5
97D70A6E6319DAF2AF90064B7A240A6B11493984E63B84DD3D59B4243DE9160F
D2657C215AADB68343D6ADA3268E20CD294301ED7C46F137DC50B152A2718BBF
8EBF5880626E9DCA1DFABF1AF6828E8D5AA9150BDAF9701F288F864D8C91E976
9E9BE865B6DEB2796C6C3FFA603A947B9F43790A98058936B3109610B502B2C2
320E75318B535D194D764C0AC7A322B5DD0D4520F96036908CBB808212A7B27E
CE14671E77725B8EC619C68EB5657863D3663208D21318F7F9415B93B1E72BB7
83612E137E85645CC4A1327859818781CB1DF455AD4BFC77E49A90F893179F5D
ECF976993082E64B63ED0533008AE77515453DA9B07AB2F1F0B1CE816E6E1D4E
D0D7A445F75F126538FE849BE9A9CA6BF221DDF53BD7E9A45017D919A46B9287
1D1D98703C6622F41A997BCE4F77456A23418E6BB7C0F9FA957FE88A449DBD23
D713F39CFB2D4A639AB99409DC6DDA631A53CF8F5F617159E03BCBC89C688A22
971129FD158E8AD10D39AD3D2E6A8A469BB27AB8F929B28A3459928FBBD0C33C
4DE82E1E1DBC8DDB977706FC4B5C14087456D9634A65BF0C97D5C49593350CFD
826633734D9B96E850FBD5F3F319ABBA61397724E8D21B14FE56B6367ECEBBE8
2D7D0CCE1C2FBBE5817C3D60CF93CAEDF9886632B27DA37F7C1A0342911D160B
E520A5D20B4013983021365E2BA6792766B0541F3262A83C4E863A94FAE921E0
57EB7E291DBE76944B7CF7F0D7363681586B405EEDD879BB508FA7E4203C8854
44027B509D69E1CAF1BAA5C1A239999E190C7B91D315AA81B289FE88E5C43D0B
251FAB17BBF7D49A71F75364C6DCECAC2C22ABD8D215AFD535C9EFD9629F178A
A75E11332FF6B05A4B1569306E3F3616EE35D8338F65B6601D3535B2C6EF7EAC
C71EF79C4EE2A862A75531E4131866D6836F7569B1659A734F35C78FDA7F3DEF
39397290CF54AA9C263E7AEF736798672CFD722612716938391A1053B727C7B1
BEA9DA04AD5B47C42E7B8A53F98AF379F3353F0FD438D215B517A69DB1CA5F27
B567D55144197A840F0BCF876AF832CF3F620A1E2EB286E45794ACF216062F88
D70270FA4453AE510543FB2E62CAB84A3BD7E2F5881B20B5BFE7FAC1125F075A
84070D639DDF28A73E73478FD27FFDDFC0246B3AAE90143AAA71DEC5E440C660
857432CAB7E1E0DE1F6ECBA47F0E0448E21EA69126434DE576DD22996B9C4671
1B5B07B923B59A56A39F22396B2BE68B14283BC384F7EC76C90DC17BF57AE82E
AB5BC5D2F39C916F68167A22824BBDAEF18501224005E4E63D8A357F85CDAC2E
1F7FA28FC65DC65FF10059A658F64A06E98152D580385B2DAA906ADC3840245C
7AAA12C0945F8E14BDD097A4BA5F2BE5F6C1704C256FDE77DE6671FC25B05400
61EB206F67B7C752E406CE88205485A27E626161E3FFEE0153BCA76E4F474E22
57DECDFB9294B874FC26D354787AE7D53389C77AFDF711FA5D7552FE3FCFA9B7
DAC7564C749913F4020389E4C7F4DC4FE13ED85AC8F57D0477D752BE1722B02E
E2B54C21DA7A976EAF928B142D2E0A5591DCF14420BABDC027E06CE3CE027336
C20703A85CD2D290AD1DC4D347A05FE5E3BB87889B74B7E0CC251A58B2F999B2
F04EA13EF3C6CE11D6FFDE47712BE6C84428E7D95E26DE1BC6142876868B6929
A8F88012693A34E2740818DE3FA7458EE6160364795A3DF3CE46A3BAEDB5E361
B1BF48DCC0B9B9045F65A4E9D61BDB537FD76AB51C39CC123DDB09534FB63C1E
A5F85BA1DF0EC2736D029EBBFA7D935A20B087832EE66475FC2AF6E938363F3F
708949FCCCD04CB56E8A00628106F12D7D6B31D08D8A047C5B9E39F4C8F1A7E9
8A06D46ACF7ABE91EF88322FC5C8346310953F9C61CAAB6B8AF4C489447D6A08
125F9E06EA30D6B07DB76E305626581D69929EA0B06E104674747A436637D015
34A880E798BB653C9AE9E8BD619FFA875FDE8F488CD798DCDB0C63532D0D1A7C
C866EB30FAE071B43C02EE5C01198E81CADFF0686839C2D44FED8257A2BE9E88
32A38671E067BE2A49D3BC5C0E7893E12A04355315FB0B46EB033DFB8C101EDD
84749263790C308966FE76F6789F21CBDF83A280C6D6FE8BDB669E2F30795E46
C6EDD896F762C9F3E647BB51E43A7BB4A949F51D5599C25DB872F75D72E9BBA1
616BEA9E026069F0262868FAAA16B44DFD016F80A6DE44A4A69B5AA6AB8C0424
C2932BB816DF4F7F74145AE2A0CCEBB71DDF61B2208823E42D3AEB663E3206F2
340F7369C6645397100FE513FDBA478C5DE5C9A0839B5DD2430725529939B414
89BA91759A62625E40B92E834A9EFB3C68005876010F9CAA8BABEEDB06B6A554
21609C50731E2435361AB8F53BF71B878591F8E0BDECC464736D96271F8872AE
ADBE8BE4A26B8145480F7EA4AFBA97EA46F6EFE3A52A20711ACF947EF3F8B580
500DC99468972BB657E57245D4FC01F8665C939D385BEC9126193E1DB54E1078
042F0B0984E812A44726C4B369EE9CE54083A417BC8ABB50A6F2B185E3B8BCBD
53A75936812779305A859E533617E5192DA6C3531189CD57DB856B29807F383B
530DE0218926F7A6FFAA401D3864931FDA344BDA891E32359EC567739B25CEC1
A4C8169F251ADF4594215549F7F225DD1F20F1269CEBFC88CBA7CFF4B7214B3A
C111FE9B511A8703810E222406D86F41996815618661ABB2C69F663AB97797B3
81D7BA0172D90246E5B076662ADAA4D2BC8FA1BDA20F13F9CB5A70465667B32F
EE2A1FE5DBB8BF41ADA4B7D3970DCE1972508929AB078E35391BD8D8C0FA2FC9
A0C63973A0236E7582D4EF32D3213BEC05DF0ABF760767CC5020B609E8225CAD
E64A95D1E7D032833DD90ACCE8B5E40A3D57D6D5F0B36617644E83AD6BB70DF0
DCD7D9410B7F47763F7FE5533806A1DE39BE6241C07B2BEBCE630CF7550B1595
81EE53E4C92D15FE69B8591DDA933337F7F789B3BBDCC5526B10BB959E76225B
2569292E55B90B4465A44624AA45A4327E23650D4C9A941E8D86A2D619CDA196
EEA705015C6EA8330D3C04F293512955F38C4170C12D709C55A2832C58930C13
D9B37FB7D4C8B0FDCAB5BA07FFBFCD805FA6089DC09D2CEBF1DC3C894CFD93C9
9BC945C25591C38596062BCF218F28DE9B4EE244182FDA170A07A7A6CFFFDD8F
B08F7AD8857066E582F48C596F3C3B3AF67294D1C45C5E5E6C2B7BF67C8AE472
79835988AAB90BFF38E234EB1F49E67200F77BA40CFE10463DF43FEF5FB13F1A
7CBEDA0B168FB8DF78C793CE54D309AD9212A1EB5883C5FF17CB637390D2DBD6
07F05E04CE60D3211C1A32304D1DF076EFEAEE3ABA07DB78D9C13F58FB5B3DF8
1A92DBEDB9EA5C55E3752855AC1225A2345D3B9E37F4068272AA3E465C74D122
782864FEC675506304AFE1EBF79D0972A652D452FA8F70F9C6BB5F7B521E534B
1EC7CC493DE8D55C2F0007B2204D1E59383FD1380519DC4E699BF7AF8D81DA1F
8B0E9626F17C2F620117230E9BF7C4A58F42F8CC037182D73D7DD884A04E0C38
C9B7B80589278B76C2C858C9735A5816A0CEA72F099E038895151004E1DC8CBC
B8D53BDA668D8F985BF4FECA6E8646042DBEAEF1AD6579B60FACA93175F3DA04
40F034036E621E1C7F31A376B3765B285B7E4CA83CB8CC1014658C2004D777E2
2D08F4B307A0E63DBB23B21D2A49101BB7CEACD2B40A686DD7C66F4FBC5B6163
24F3A4F48706C45D54FE0056B5C4E748FF43EE41D34563867E41D8160500122A
2115AB57213917F5B1BEFFDA531DEE363AE61D480B05F7F2F440B851B6CE6265
2FFA0A0FCDACA7C1FB9948A63967B3E4E106A7D2194844E368623FA61D327321
C0949D6495FD37433D8157365435FC316539671407676D347F7841CAF39E315D
00B2F5878D64D0BD920D3E418CBEBE3EF5717D509F0AD20C2B9BF8B481F8D7ED
B1ABF3595255DBF1DA8AE4FEB4EF00FCA5E681AC5C80F71ED707CE5B6D0DD8B3
800B87042E1CA1C3FE1AC461FB47E7A8AF5977DEDEBD2B1FAE57780342CAD7B6
205770B6D14E8C4387DF27056D3E3AD60FE0811A1F9D2D7DFB6D1D52CA8F8E6C
3EDF8F78AE862AF1D75546E4C0C624CC57A18FD61968CF742FEA4B45C758CD53
78DA3A32960328BD4079C7280F19AC3FB66D24DA8C9235AE7ECEBA537F09A958
F5FD63C4E3A0C49F44F8CB0A828D2A7DE24949138C7206354D6BE8CDB99BA5D7
C60CB286AE290268214AC0A0C3F775BC92DD5326A100CF4842EDC00AEC236CDC
E4F8F8448596B7E59BCB5EFFCB7D8C90837FA5BA690B9FB4D4F24BE0EF5EE864
717394793E045BA233A7B146AFECA0664577795ECACF06E811E1A0147A38A3B9
2941416AFB19B4C82A73921AA970B08D68818AB2F159E527EB7C48B64C43AA2D
D5DD0DAD15AD0161667D273BFD59BA13D7AFD709F43DA9E1E5B3B5CCFE7EB38F
08DDDD02CC0CA2A60CEDB070D54AFD8F8EEF0B460E839A2904A8DE16CE73F632
3CBA9A65DDC7DFF06E5FD2B074A6312D01F8D75491B87EDBDAF045FD2093AE79
0C2CDF2CD7677D4639E412812A7E95224C3995631589DCFB5363C82E7D1F66D8
3224A7172E5F0DBB88275EA86428DF0D223AD4079C9D233CCF7C83D3D488EA8E
0D1A5710DB03D00B4729E51803322DB1C649D2C0FD6D3ECDD66DF8EF0FA80B1C
C447EBBAFFFE5BCA6262F252CAA42FDB90837425645E57637A4FE5DE5CDF423F
85E41136A2DB6EEF9FF48965C73E07A1FA4C9C0DB88E5FDD963E55528C8986E1
030CD62EF13B3DCD4936080F90EDD2CFBBC294E666E0D78D448CA04113EFF2D9
C467D9E7616C426F93C1AA8C3D31D26B2F14C4B1ED42390E613B4881D137F79C
07A1E8874FB91F8C3F561945FD8903D4BE99F18212E8DB95BE4220E57876DA3F
5D502316602D0CD1B1121FC930F08BCAC9D6E5B9ADF80B3C1CA1215756F11ECC
7D2DA3D97ED094920C38CC4A68D7BFB6F75E8431A3840D5845CA8752F14AAF8D
F5A80ACF8E703D88EDCBE251C10238BBAAA923DC490049E76DACCD2FD320C349
7FF97E3E2A9EC49C5EBA951F0EEA06D48727CCEC45DFE86D667725454B700F97
06B1A6521B25A0B5034BB64EFD4C7AD11E83F24BF7ED607789A1AE805881E4FA
A5A8610DB42BC7341F81D63CE70A7E37715449BD850A4CA83A0C0EB1A33A29D3
82630F9F62CAA98AF0AEAE3E0F450B925E24A82907A642366EF798CC064FF67A
D3BC3D3CF3BD23641A91F2DB09680BBED2586A8869FC8015134901F7F4684B70
73E4D6A466F013F76619BE61A4B9F66BF167EA7FF7DCCFDBDDE96DE78EBBC0C4
A4DAC9DE8D709078F4C134FC1BBF53315977ED4C9C41CC4A02026E4C3443653F
39B23880391A2320170337F211CD83794118E5A014922CFBD8482D88F5622059
3DE77CCE12C636241FAE4F5B91EFEBEFF1EA36C91465BB15A49EE3202451B862
BECD7D819A56F7D7E46F981BD96FF1FC2587943D90F4B0F7B4C6ED4B76D6050B
01C551C265BCFADE1E2D72A0FD4C8AE9559C7F2723769B1E3254E33B7725321A
1E57D149D9A3091EC5714180DD68B89D7BE2AEFEADCA9585069CEF9D5FBC51F6
B526E00E168E72F5CC9A70349DE30D46C50D30536821A4D988488C72AA9A8E87
52DF5FD0ACDBC377A37AB3140D89EE5803A70886696176D2CB7D226443866046
174AF7D525A28D851AE35BC42A2FC7EE4777EFD0E1650F7BCBEF9DF1AB64870B
CA1E15C7D67B3FC527B86723054D6C1EF1A869A9FCD5244D0BCE4182BAFF60BA
C7DC0ABB04C31C92741C14627D5ABE692403C6624B6CA64544E905B11C6D8FD7
1F28055E4BAA5CB25996FE88F502742F42E11D087F61117F9730652F493329A2
453D9508DE874DD92BE4185F6A7BF99E562EB614DF01385B86F6F271F355FF1E
ED5A84D534446E834B5435D483DC20A729E81CEB96EDAEE53D2E431BD905046D
712133BB30F33DAF2FC62BDB3A171BAC8E33297C08360CF255050DDAD58DC96D
280AEE9F9B66D2D8806E2CD32F8A08434FE91B7451AC5948A1DAAFD2D28CCA24
8184E20D0F00EA9F2C663E7C4ECA2F9AF6EEA56F282AF32DBD960D40D4CF055F
F33D5C25602C2D6040BDAFBED1926120464F183124F48D34BB54A06A6724DCBD
DB2CD715999302DA068272B4E5742DD8D017E604C4114B1DB529A841F633160F
CFE80EA9B3B52B940AC0F685DA509ECA4B420A996E8488933EAA721B562450B6
554302451C9AD6A56A84B85EAC18F03535099C8363599D4397454E19C0AB2A34
9EE7A3C94165E396B9EFB97067315FC4762F2BB4EFD7FC635FFF0593528D9079
69A5556D34927059A46525E6445A881CFF4B5B790ECF680068973A47EB6849A0
52B9F18FB039050940EA4F9B51A3B9A099F33147569AE9254322ED47A6C7612C
46EA207F0A0FCB785E1DAEB571BB99C97D296CA1DE3838CAAD06A98FF8146056
ED014E14180D505B17AFAE35F58696C16D8C46F13290F1600075A363489C9D63
6CB4DB7FDCCF49E15B6825CBC4E04A2D6BA136289D198E2C851D794A9A3E8E45
7790862DDC9EC0D12DF50176A194F39C7C13C88150D2DD1208F386BBA3B0FC1A
77F94819F12D78D5C59139A1DE0F2DFB3A7FFEC4FC38067455003968A57F73B3
6C15268401F75B5C843D46EC956AA677A8DB075B61E547DEC35A63124769324D
BD64C1B1D38777BE93F60BF4D92C85CB8C9ED2C8A77EEE0A4EBFF3A44F237305
EC57E50E3120CFB0DF8D573A96A740E1260A26C3174AD869CF2EEB226ECD812C
480D45502C3A4BE2B4EF9A8EAC7DB836F0C843971067F690B653D9C722655066
D113AAFB04FBDC5BCEE0FF67A38C1808943882E4CE60A6969939BEFE16C09B59
CE50B529C3BE6377368C3E827E9441D96BB174BAAC8B518671E3A9B95D4F1722
A26F4FFF48348CEDACCC4FD98F71147D0B760B320705C1C13C9815E2CE82C5F9
D6CF04C81F1BCB9F12A188F9828498C220C6DF1738CA9F236B6D6A01D747BB6D
F322F38D0D60A2E07E0BF1E259214C3F3EF0A72074C261ED09B05DB3915D0835
B2BB52B6ECCB04E712B6BFE1A0DA7437DDD8C4C05CA45B1D5CA17EA99BCE6428
7E635AAB8F2BA639F28C52CD0800BC348990D0E3832B0303A272D6C99D8A6044
C5093A422D646898EF85ADB647544B2CE33DB5DC66717506CC90ACB01CF58830
D50F4CF7BACAFA2311819C3F50A9F91249C624EEE17EF5752C6AF77D6B852703
81F95A42593045A69334D6DC1280384CDFA0D8088D97332FDB06A02E5DE9F962
1B41C68A0139BC5F03FF841D8E93FAD2DC08E645F476034919C218693989244F
DBAFFDB4FC0436DA9D43C8A2D55CF8DDB0E7ACDF9D564BCBE38073E74D65C8AB
0E89D87275D680F0FBC2389D1AABA196474E26BB4BA01527A72E554C29EDD3FE
7B17BEF3AB22F2C7C0EFA69C708C36CDDA24C38A845EBA9E9A3E6052B54C188D
2743EF1487B6DF0E6E622A697BBE91D5627DB3F32A57C0AC98368FE53BD09844
A326B096D01FA3547FAF440D44E079EC0EFC2A482B05052B2D57DA79B8B811E6
DD9D0E46E838F1402F32EC5FB127DF771049F7B79BCF62C14E3FB4D6D7BBDB80
975272E6DEE0109857F51D57E304B74DE4AE99ECFCD0A40E57C5E51283D8F270
291665EE714A6596DBBB5285FDDC4B6328BA6745998EAEF40EE717C63AEF8A59
E87D8E3AC8161B6638FB5D0963F8795587949FFD6F58C5FD18741BA3483B7FD3
FC31F188B096FEC566BA23ABC2B34B79DC293909C9E8393AC9A26E6538672756
3FE2EEF3E04ABA6D344F2DF359AE718C7D0EB5CDA5AB3D09C62C990BD5BD7E73
3F1F8AF93ED0FF3222D7411CB9AD3C3AE9EDA04DD1AFD21A4653AE6A890E6C07
1607F1668E4B62730DA65DF88C3C63FD7816C32F26D21A87522C2097BB925D92
CBB694A7F77E91F3FAB14D0A493384DF902DE5D5F4FEAB5F5BDF567878AC8B4F
98FBFE8FD16D07A58E2211B87983D40D5CE6349A207FF195B7F09B914CB6D688
B103A5206380A90713D3C872EF8C026D2E302BEA473BAB705DE58D802A47C249
9C40EE6F20398E591A3878D4A9DE9F6EC097521DDB694503AA8FE3BBCF24A5FB
3DD6CCF1247B5D9724508C63A3E107DE56F0802CB083399BFC3A9DA62E7575E2
58AA589E85ABFF222717335997260A7F56965DE4DE551885BA8A1DAA5C97AC34
ECDB36FEBE3D8428A4681871FEF7CBF2B5DCFE747550D296B419140C39EB3AD9
D65B6146705DC3FEF0131533283A100D9DBCAEDB8A10CAE4C431136FD94089D7
64402322603B7049D4D10F97FD54D03D81B7B134293004BFB852D50DE5C6C5A8
29F3FC4855C34AE134EF939755B88270B114106573415FB185E395F6FB0A4698
B105964A9F374AF011972D67BBE0B3CDBBD0D9918A0E0D2653726C630FC8A63D
7C5BE82A965EDC1E0A57652688375FA60463EDEF222D4A6D726B768D8EA06584
BE7D23F6FE42CF8541F4BCAE1B01C73D6500207B211720DF98B72D016CC513FF
9109B59C4DBE5108CAE19687C1682A36F39AA8AD09C5AB7D69A13EB0BF2F50A4
0766AC191B105EE28BF0A87862C377E47EDAA69F99B7793F5F76114940848E50
CE05005B4E2C91103DB7BA7BCE79755E4324C0D0305EE203294CC82451EF3780
106156CC6C6BD07296CA7B927B869F8A9755CF9173F22D30EBD3217A98616E3C
8525AC8ACDB07F9311558AB53805673411836886A919BBB916416DC1C2061CF7
448ADED96B2933FD25C207BD374AB495DF564F25554274A3D2129CF7E6562F56
E3D7234B8660A536DF464418BD08E3DB7CC2A2A8B80A0CEA897505ED6367A460
3B6C0CE70E7C5F482C6B3FCFDD8C8266E023C421481CDBD041469219AFAFF611
97F1A2D6B13A90A76AF1FB2520D973DB1CA53BBB11A81115605A9ECEB0AA60CB
972E5FC2C431F1A5EB305D09C8B4C6D5CE1E397CE7FE9DA819F132192B2B91D1
2832F636D75DFC3A82143BDEE17461D536B13D21CDDC295EB617AFD850D59356
7172AD007B843AA74DB797099AB440C40BE561612B4506A8E26D1C4C5A8DD4D6
2B8DA07722FA903A6ADD179E0214071F1AA8A21022283E7380AF0B2656DAF629
50E8EB7C686EDCBAB6E56C5198041DEB47AE8BCDB4C30D318D2CF076491894E9
C9BBA0C6D9DC4B5962350AEF5B9DC1EFFB0C9B8F562660D677F376B2279089D0
294FD57B5ED589C1D28C6E9F02C821134A221334E1B4AFCD618FD86BAEBB31CC
28FF741E785DA99568AC909B091BDDEA56D6E3B75F4307E3A989C1BE6C92546C
F518EE6BFA37355BF3A752C26A014FFD48B98F7C1B11B625A43E677DD04B16B5
B1B5F666AA67EBD602583D810578ADF8FBCE669C3913DDFECB2F64745EFDF7DA
13E21B44417230EA477D2E13452EE0E048FFBC3B3F3E32687948361AE63B2F3A
C2393837699C356E580C995217D2BCADFDCCE3A6276B86DDA6DF06884B153369
327D3461E0493B6CDAC5102E62040437522DBA5DB6B6A4B30BE8AF1E9AD4DA47
AA79B1AC528F44184C40B9FC2E402F602FA679EFBF9F374BEE06E6332B112399
D18B8822C21B3B1DA3A84B31023D39508C1F0C97CFB05298E67DDF6EE891E261
67C5A17051C6DAEC3924E7E9FC00C98225CCDF01D885724122CBFD1354A59CC2
35EF7E987F633164341E2074B26689C6797F81618EC137BA7AE502904A211920
D7FA213A6F0BE82D49F7237690413AD381F5D2A3BB67D027C48455F48E717DCB
E1D0ED373D62E180BF0AE16B91605EBB768E97242CA8DB982AC0C2DCFD4B5EE8
95BDC8910A12F20439946D3CA70A5F67A62B82BEC253FF1C68B1DB9BE887923C
1B4F803DEDBC42CB12082ED81E92F657D30E8652E76C6D93B1C7196BB77C0DBD
C2DCB9E8734272157E4BD32B57FAD22278DF0B98DA7ACCE25626F453E8A7387E
F75FB71ABECBCE09E6D35C7CDCD550EC6907A8832D6831B8F16C6FF757E3733A
3D028A0456B64C686A35EFFED2BEC9A9A1D93E98745DD6036FD954AAC48ECCC5
470FE468CC4AEEEC6D6E650378E5561990EF37879B517DA5D550B5DABF216D27
26941BDBE7286F95F3DB4673BEA513C8AE8FAABD78ACF6AB6918308627EE223A
BFCD0B05C18134AB378AA07512D71E7AF987C925AD05686B6891EA8573FD13E2
790918687BD4DA3C12A9E0F33FCB6AA2BE3E3397B970E80338E5338F0F603B86
A42FA5A6285CDEF0739EBEB1B9133E86BAEE66E1AC48F83BECD4FA2CA3F1D5EE
8EA02DA4925191191A953FE68C13398E2D80796714C07FE16CAE171AC6BB0870
0AA402B06C310DC99F0A07669C57B5292530FB8DF265DB909A86B8D076468B4A
B24AA398EE42F29BB41E7A640883F9D6021F4CC7E949670DACA3233FFCBD64F6
AAE2DFBB7B1E69F24A6C0A8D86081B2B09270D561B20EAD4D6B1D40B7F333A0A
F1B2E915DA6709BA159E81455907510390AE7C870A4F38BC8DD19149558B9687
37B0777DC5D7964E3B50F4CEF6EF43F38BE9F01A68B60FBAC4BEE09E197C2554
C413B003ED8D8A095BEDCB291ACC0FB3AEC024D779BA9D69FD3D0F5D105F95E0
EA00C1483DC52F2A37BDD09F1F416BF99C1299784AA46D36515387FBD61C1C27
A2B6E55C6B086E87B32921BD7441F10E49DD10D7D82E81AED5FE4C5AC09F617B
9BEED75211D3FED854D9414ADC9B6AA0529863DD90FD48A3F82DF1F7C634D83A
261AB18F257A389AE958DC7315251E670296B0F415AB99D1FFB56AC1E7E61BBE
0DD2A5C6DCB7E270957BAC7584BFA9A6E21CFB293F0F51C58199D2EB431037D2
C44DB61F55B46B3F034CE7127628B7A3549AA2CA1FF18DD7AECFC4EE7B3AEC3D
D0A1EBF2F7E045BCF177FFEC6A32B8BD47EDF924EDE5FAE04FFAE9904F4229AA
DF5B82485C624F0B7319B147CAB299A6FC7EE302DB985DACE5B13F8FA8E73504
96E522B8D32869418AFE99B2EE70F52CCFE638419454432B9688E631272806CA
FDC72B2F2971931F3D32AEE7B8979EF969E122CFB6D7AE0C314C3CF64859DADA
99AF547DF83E7B74AC852752D25B6EE4A29B6CBA28CB35FDCE44C0CF816E1420
9456518D9DC7A31DDA813F7ECE178F6C80A53010BF2272F50E93F5EC18E91D6A
BA5DD888E1E9FBAB51276F78875DC0E6EBF759FD1C92A7D9E86D57B9632E5D3B
823FCB477610DEBF376FF0DAAF01A47E0CCBC52F0052C93C35EDAC9BD26C0CC6
5D62756F5476CD1BD7581567F55A6F04352AFB226DC7087F9D5B254E454126DA
1C12C7ECD608698A0B2E3595CAF63B8BB3C1DC9AC379FDB7F99F255C8AC29A46
AA322BD508021592969A16DCBA6959C5B92D0510AC400844405C810D6E34D41F
DC8867E6A9
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMBX10
%!PS-AdobeFont-1.1: CMBX10 1.00B
%%CreationDate: 1992 Feb 19 19:54:06
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.00B) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMBX10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Bold) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
end readonly def
/FontName /CMBX10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 39 /quoteright put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 73 /I put
dup 74 /J put
dup 76 /L put
dup 77 /M put
dup 79 /O put
dup 80 /P put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 124 /emdash put
readonly def
/FontBBox{-301 -250 1164 946}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733
4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA
55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822
C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741
5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD522D9C33AD8369B
D7DCC9DF993778482F35F965973DE876FA19E109AA198A00658AB3F0D8E3DDD1
08A573F2D525202AFC57E05D141E6C0BB811E1FE280EEA002B7A45BB363AD06C
318D320D2C81AA5DCC842CEF66E7DF7670588CB39C9F42EE7763A3A17372432A
173BDEF7ECCEA297CCDD76A835C36DCE9DB8F8CB66CC71B4920CF5BF055A5260
5B41A5373BA6E4F63C85671D979EA5EC30D22163E6D206168A3827F465279870
CA80E6632FCB86E990AD1C8A0331513E0B6F2A90442F6407FE14BDBFCA5C7EEE
FB670E1246212B4880BF7194756805D1553C4AFBEA59EB7DF0FD90AF07DE1610
FF9708305CFF6643FCD7DB1C5D43F9353EBB73317DC94CC58E94E3904326398D
16220F728A51D930A6D89064841BC9B7B2608B4382CE0255C8B1665245BD77E0
BFD234597B56B67EB528B6511D4C8F3B8D30312048BF6E2C98E66BA3E85EFCE6
F2B127CAF4EB03F7D998F736CC57D1443DD41EB00A3381CADD7262FA3D6C4863
17F71D7F04D2ABFD61663C8B1C2BDB3CAD8229FF26EDC6E54EB7A1C23223B6F7
8A7FAD967A2EA7DC46BDA172ECA0BE81C9A7FE054F1C0885A2DD7C0D5D34DD23
4690A8A36F3ED55F5D4F509E0B8D13574FC2C668017611D28EC176F2638E2D30
A983C620A98D633895E4E5C7A488F07EA1CBFD0874C856F4FDA49C6611BB8F5F
9EEC232E3F8884650A8402199CA6D22489595E1CC81B7834582F4BE4E7E404DD
89CE2A169BBA8D10874447F78EC2B94DBDDB11A0D25D70838C052E1928BE1EEC
C8AD2AB3D2F5804D626B1A43F7270575C6C0A42A7D9DB2AD1DA3D152DC2B8512
8BC797594131C8038C136969DFCE1315C53E710CC7E4C771F43ADA4ED0FE8C4E
B03A3CA3D46F77128C547495398CE828F7E14AB4467760685A26C39F4343ABD6
F84480D20B4FE56391F344E2181C9631F74711BBF3213E4AAE1615CFD1498245
49FC71AE1039E27E3A68D90F1D789A6B5EE6B075D4754A82A584DEA0A23AA5FE
CAC1193EDFE3E2C4B8173E97E5458C98D292B04A6D4373512E2072523E9772E3
6CA2F1C83F8F41970BC48AD997FC9FA94548E97BA8E2104BD09185E8194EF0D1
4BFDA071213C63F9E6981985273A5E1D91B95D1079CE6F754462DCD65C573860
365A4D2FD5E5C0FF6BB819C46845BA7CC58A0CE61AB85CF81EB40EC7998F4405
92E519D9C6424F841B4A3D78991EA8FF1E903BDD959EAAA11CB03DF11BCE469F
621C596C9251F4731155429E7F9C8C9862FBDD7E982CC4996836EB36CCA89F98
0915F107F74E23703069E38146C9CC3E404A9341F0101308BF9F0672B7B9AF1C
E302B06AC371764B91C18C7084D0023306951AA76640C52E278ACE328A40BA1E
9B2BECB99D087912686E41532ED115311BEDED6F24AB72F91205CFA99F6EFB02
C0B462705013486A036C465F6A8E4449E886FE04F293A150739FF312D62CCC27
1F2E1E8382D72788525F89B4C2B7A9ED8C830EDCEA6163DF37D7367D8BE087EE
8BFBF042D98C7D30023753C368CA6BC2E17949BCA39B596F7C7C3368803CD9E5
2889BDF0168D85EE0B100F594A7F3D7F04D164E86B5EF06F65BCF671ED4B75BE
EF68E0D1D421B1DD7BCB0208501545D3C4966222762A6EAC7430A1476850E702
C02B90A4B8A3F0FD2EC1BD89EF8700291D9BDDADED45E1CE9EB1F6F1C01988F3
25FA1CF9CCEA624EAC140F14E5CCCA45BC64B8833A7BC0C630F70B2180EA15F2
8D3494E9E487FCDD3401694C82E44E224D64DFC87EBE6755F271273F4743D1BD
1C933EF51EA52CAD6FA0E1D6AF817007B7ECDABC27FB22432B8BFB8BF4D23CE0
FD2DE8DE421CC0BA0E2BCDD96D69760787D693E6E25C132B1BB0D9EF2C16416F
CECAD084C303C2D73F47E1BDD0A88C8FC3592D24A9DC90BEC49785FE95A31307
2C876B3485EB800FDA5BD985764C057DFF2B7333081F515D26F83CB71677D485
03295F979F59DBA0383463B07CE975151887065A65671A6BFFBD427E01E66929
E33CEE5B84A19155BACF17F060E383DC39E0F3905C849E1A452711D455CB2810
FF05EAFE5E0E8AE156C8170CC33F513B5920D2E0ABB13EFDCB1A17B5FF32771D
BB03FEEF3F7C7B75CC8084688F8F926AA89D8A88990803C81135D87816678734
64592AF928CC99F8250897ED676F61A78ECDAC19531DB1CAEC65B1716AE6DE48
DCC915CA32D29AAAC68DBFE89DA7306660F39B1B7209343F1A307AB7B520E781
5A36C345A1341ECEBFE9ED32325353183C977735B96944D175C6BD206C2E1890
6798FCAF755E9524AE4427222C79D78F15251F89A8421FE2D0E6AFC8ADBDE7EC
9E92A24E7BC381E3EDEFE4CF98D2E43C068BF084B55F21A92EB0226772492561
841603609E14128A7714B97974D1072E8C320A1A2760DA32C9EE87B34D732E85
31E34A70C24232B38837CF9568B9F4701EDA3B01D49AB9285F4BA6BC3DC77A01
72AE72D97F768414C1F7C006E7F066C195603D1E44AF4092DB346EFB286D7032
CEE39715281113243B685A704CC33BED105FC5D94D7BB69AB8ABAAF1952E955B
348B431F4A1BBDB716E74AFB455CAC286D073E95B6AC9A04518A77B5D79B057B
7848A4FEA014E6450ED68F0B04FDA807AF2334E596D2537581C561471A6E99F1
068CEE1EF37270D6365C43B99DE8D3720EDF6C2810516161A0F6AC8CF1D1A567
4E15295CF40BB79BD7A7FDC91ED16DA58F539CC15969B83869867660FD81E4CE
47D8668E0D341C755BF8C3AD218333A1586C82B3E6531BFDB877F058907EBC98
E8584DD697AE6A8484846BA1B1C2C3E51C99EE8A3CE33AC348F607AEDDA294F9
298040CD28992A629FA5024CE5BAEA8736EB273E9748C700762460A51E323136
8FDC708A83392668AE2E4CA2CB41E09FC94E0BA912B5966094E4B0E7B8E2BF15
09F340B02AA9067A166087872659E380540B6F36E05CF2CA15B2420C99A5D397
DF1941C69740A7B0539D53770A83CE2109A94D1823E5BAFC25E946E0FC4E39DE
E783D4783FF0C698E20D297792616BA0578DDA80B4E1B857300AB755EDF4DEAD
612BD52A16C03446F66F152BF1E5222F4D2434C41221E7B7B7A9B07F711C06FD
74AA0910D8D91DC113786A1AE033397C8432147E80A9B041BC62ABCC0D5EDB4F
EA9625EEE584F0AE269AEC4945633CAE0B885EC67AFEE74EC403A299EED78FE8
4D15DC6923525237D17AFF6516C640E22B06628AA91092B02353D53FA6E275D4
95905DC84A7C13F8C516AB15CA41ECFCDA645A7882D13824F79F4297BC15A4FF
664E4397A22D93E1862097BC1F4C07C0D43C8DD893441C2982C0889F69150F34
AF2933A504730A499036843AB4CEB9B0894574398EF69FABA08883F6F3243BA6
6247581E3F04ACA2DAC7ACB028108D45FB8501808DE3B6AA0C8378D73DF71C62
4D7826E877A3D82E65575289C20824CF9ED590CA5406611F133D7A874558B769
5873AC6FD3CC6FC5E6072F7B1CBDF82792B8DCDFC1B3D966590D9923CFAE7D57
DAF80CE1EA00B688FA2BC1987ED4B934544BDE31066F47056BDF3C0E2E695CE9
6B8F1533129D9E992F39943164D40F96B1A4BE270B4BD06A0AF18AB06AD2E08B
C3AFC9FA45967805D64D1BBAE27699D416B11CC397936AACE945745030BBF347
571AB0EE73E16E3B1AEE972BB78626C46ADE4F5CD37DA1F63D8205540F51D7D0
98611309680BF94446E02DB3A868C017DCD1DFDE403B010F3AE8C53897010A42
906AE49384B8366FE7CBBFF518F9D40D3B4D1EA82326D7DB043C31B2D0978B94
2C761DB0CB18F8A40D509879ED978225670151A13F20E58D6B012EF6CFDE2B2D
1F08C18D7DC6F65D2D83923EDC8D9B1E31F2EDEB97D53E96E6F65663295D13F6
9D9BE956FC15B4CE9B2EFCC0311D3BD14D285726C8A80895C494C6480632CE87
2DE645A927679DB2C280F3158595522236A0A522245A1C944A5317A4BBE02839
8F65032BBC43DAA72DE86BF1942795B3ABC983B5E1E1397711B16908E5862DAC
7C61DA6E0D7CC5CD767D4693888E776CB348A9D87044AAFF357B6F163E9A9E1F
8D6D25279BB2C51C6AA95731A8673B61713B4DC5879E1836A9CACC19E505CC7C
7AA85E213EA818797EF4809AB88A5A2BBBB5308243762E0827EE99AA7042AADC
C1FE016DFDBC7E4119E86C1E483462B64103E1D36ADC3D3F1E582BEEF8C23969
42841FED9B07843B212E107C1452F43B58CA692F401317934936A6682F07CB3C
4557DDC235BF9A059A8A4CDEBA7F10247B54F05954D27E3A17D25FAC1AA2B9E4
8F7482D9D106A085FD5D6A97E8C560FD117633A8DEA8081B3031C1266BB70C82
3867AC28DA5ED09A2E4A648041A365C627D67B5B7C0A610EC667C1D21F9F159C
2468415557362C29D73A7D3CF31FF8DA109A6FF0848EB107071166B7E4E319D6
DB594DE26F88B07C8521E2287E42AD6C21E03DDFBBDF7ABF3DD4EB3E31949930
10A04E775335D024AA379DB1200C4D33CE1B3C72564DE61E942C70E3F08DEE23
03E89F5E2A8B4BCB149A1C5EBBCA5388A7BF024FC09CFA85F66B286F1EE5EC40
181FE941CFEAA4FF7B18EDECFE816C7606D70DD984844AE6D188B2D39BAD1A2B
9507FB8D7B91272C162237A36A9E65DE3C39CBA6F7F289E94FF3BB42CF698839
72CF106857B6AD452816E546F168BBEF87C361B1F220A327EB189FEA678C6032
C1AB58027ECB8C165B44F9F6374036C889D8DB171BC2B30F17EE4DD3B7BCCDC7
8CE32AAE9631628F80BD457CF7C2963C3F61387F439383C6D225847965245CF3
44FAB953B337132BECDB9D7A48B9FFC79E211B85E22F10C9BFBA9251EB1B6E40
08644EBC9C463FC3A2798D8305EC9036F85590923336FAA8C9FB5667FA6E1B71
EB9619DB844FE702911B38D66529C52FCB37FC9FFAC7080A6B1AB779371FD382
92F21834C05B9CD5B9FE2D80133B758B343DAFD5065BAD526E0F5705FFDFF393
FC39170C87004D4392BBF48FA9F8C9BBF3D097FFB823DFEA067C374C4BCC5FC5
C075AA61B0F501CA40262E1283FEAB72A818E36056B17F01227EAD013FE99A87
46BF17552786DF242FC0E61D2538536549A26721E50920A03442D6A359A77F76
B6F135F50FCF9EB26F4A2987E70DD0A91CAD885A0AF5FBDB109D8E1766F2A83E
3ACA0E037C3F0640CAFC2F661CDBC8580F5182C1337278A5DE6F690FCC13BD99
D5F2250FEFEB2B9CACF22BB7E791F36C8537CA5C614045BD193EDA547234D4C1
CB9DC9BEB573655AD05B6556361B4A505037B1D05CD01F1BED47D76F7BC3287B
9765A0326B2582C8272EABC95B032080BCC7470399BBC5F4CC3626C74D4F870C
5006A95459EF6B0D0FC11776EDA5EFBB4B4003929BA204146EAE2153571F374F
306AD408AB8A0BCD2BDC422B04957FA291746CADF4A7748C18681542B29497F2
5384DCD8994670E92BADA3409B424144ECA18BFB8B320AB0AE55832AB84AB985
91AC80EDF356B70DA8C632DAD989FF863D121657791D36F986BD7648E15B316C
95588FB2F459E1DC5BFD75EAB752D519DE326F4D8A4D7ABF0A8164FB5348607B
C45F6EA5A8FD51207F511A043B4B1CA9B96114CAC72900EC0B377A7BE35FD216
CDB3A94C83B36C42FAD3D31BF3CA8D58E50691B94D1B5327D5532ABF53AF5F6C
41D02C157CCF5826E2D85EDF28354A06479A6AE5E0624DE55D0F353D1EC3DC65
41981701D0C68F14C056C69328ECF8C44D550CBF7F8CC17BD9329ACEC30A8A8B
85F43CD44DA6803F2A8A618F87D7AB3C4D2770DB2EC6C078FCEFC03710165405
0AAA897A18E7398A407B93CD6A373FBFAF2C51069BAB56F933888A76C82212B9
BED6253D289E0030359587DE4D691CA81CEDB1E206DA3A6243320988B3D134A5
D7E85B9E7C91288A7291636F8157C7537B01B5E34938788485952AFBACCDB9CA
80DE227FE32B12A23CBE99B7DC209804C73B175D8EF88C62BE9A88CFF534B973
082EC75B98E8F717794D527D5BCCB3F084BB63DAAD30D2AFAF74A400E47FB164
4BE3C40B19C0F90E501657B3D52582D5CDA8E61FDD9B7BCC1F369967F60CEDF4
32E9D76F6D608B2C63F21A84693845A36BEB54E65569763E4715BE031A449F71
F311FE125FBEC5DFFACDACEDE5B691662E168B10D97085EE4290160DFC12FC07
5ABA8718FD04A2FD27DCC8634C02F337904F1263CA8DD6C750ABC6CC55ECA033
D51D8CBFC10BA17352A36C10316040208A68AF79C69AF8FDACC78CA440B85DAB
1B609CD30FA114D5FC701B6129DE5BDB035B78FCE941F3CC5EDA57D09426FDDB
7B4A07BFBA84FD54E3F3F06BDBF942A936B4A8C4D673F23444D4D44BC32AFA13
A7EBBAAEF750AA779E8A604881D88B68146135B542512C1C9562F4F77DB4F451
730C3CBF016805F886E0584589115336C3BC1569558A058B0032478771513760
C0B72037702EB89E55EBD14FF1B3F7EEFEA8636D9C91C77D48CB6790F3586795
FDC0FDBB75E2E7A6EB69859C85A10B43F8B8246742EE5B233384925FD058F6BE
2A866F62E040C9426E90A1C2CEF1F47C2397985B42B43F1A0EF2912E5C7BDBD4
4950EED8545C5BD7242FE37CCAF1436220723B7583107A021682E5A9417B1988
BC9014CEABC3532D466A7AD314B905E8966C1B9A41925884422179B3F6A4661B
77964981593F0B04BDDB511D0DDF81CF62A315937EB1A4F4FE41D99316652A4A
F3954E172DAB2BF11B15DA9748AE22D9E66BB1730BD641332FB39C1FDFD29456
AE3DCAB63F74C602269992BA57782CF01BF5BC139016452477CE057E9AD7AA53
0C7C2DC0D863B415FC68ED69B7AEE7E3C75EB19DD53D2B31350DDEAD614233B6
189D182B61074E5673820B30F548CCD76B5109B7DC2B7DDCC947732C6CD1949A
7932212606D23220CFA54428BFDB45D2A00A3221BC6DE48A561526D1AEC58186
F80D5B7A9B8B9D29DDDCDC1286EF487A92EB7641E1C0F30B92BF13667D09D86A
9BCD8E804293F66E18B5511E15989FA8F187BF4421001F26A163A14002C413D4
078B482604DFB98EFAA3D4CB0674C2F8EC5D8AE4BEF737C177DFE30E168407C7
D2E8DFA35EC68ED4A93A279AEFD35A32C8B8435A0AB092502A6A94812E148950
7CF40E048CD211F0FAAEAB6067D6A615A1BC8B6E3F77798DAC88AE0B88343F9E
8B78478771FB572C90AAD895F97277CF57476BF469E1BFE62E455080C85CADFD
662E772CD30D53078BB39A0C1FADF5DE82C90AEFB02685FCC07E3FFA181F0989
169E91D7C2D5F5E7FC660ABB69BD3A76525888DED5FCF505D60809A24C7C7A9F
E3C86ACE5BE09E5D6C8351B46E803C7A21C1FC7F73778F6D38F8C6440B8E5C8E
C992FCA996DA4A947897C279D7FA16F2F00665FE2E44CA7C5BDE7B3FD450AEB1
23E5D2E2133C8914716142FE5F64156CAE11CF9897429F5FD2EF76554D147387
A49E6736AF6DA274475FBDA9D9F8737CB27AD73E766AEEF598BDEB3FA737AE20
53B561D30BFAD7DA0B5391AAB91F7A7CD12B281D4AFC765F946BF8D569F34E57
73FCB0789EBB8EECC1B42309E651A262E46E36BBC6DBF4D9622130BDB21DD511
2F0432F7BB5F7C6F45BD287567C8A053B9D970CFB07D33529C5671F4CF5A1BE5
71CC0AB0EDDD6CBF6F4B999DBC1976E373FB4EC9C427F4351D7A184E660BDE6E
6FE236599672F7BF843AFE22E4AE3396E752E20E8933F940048488F0C17E269F
30A2B6DD50ECB0ED3C6E6AACD1FE40630E4CF28B7E3C3908D89A2CE3A6B5170D
D07DBC078A257BD7F36AB3C2BC07D3D719E25CF86F9C546EC00A1A987DE5BF76
F183A0D8DF91B010780BF64EE93B2A780584EB88F68A87C839695CFAEDDB72D2
C618311D4C82CB426D8DA0CF53F9609781DEA38CE7B506EB6DB4A46176538660
996CCD981EBACB873D46BE4F8C478C3F25C131DEBBFBC49C3904E87ECD380038
A25BFAC8DA4836179BDB906DD830A2DA7BB1F208AAA4D8A230DE1D2AFC2046D0
8160F4A48CF876802E2B1ADFD789137B18F1EF40377982C6705F7CF4BCB1573F
187C1A8AFE03680A5BEF3D34845C13E7374CD1092C5BEBE3D4072A953174BEB5
CD9DCA323F364BD0C626D662468F9B6A55C31BB9017B05271E5891AA681988F6
5D496B3BD0D35F5C59A90A8605202E86675F0A7D0586F2B6B25035A6766D736E
51F65B01A84572852B246FBC52D3F74E78B39D5DF2B642C8CE27B7C4C03877AC
DA412EF4A7BA17D5C3B2F441D179F95010BB2A52D7C599697C2C417FCB9BC8AC
0770D9275F1E1360F7A41DA416ACFCBF4496E773673E23F2B4FBB5F24A67537D
78C67FB6A434298C045E157137910ABFA7E87A18E45C81E90F67C835C2C83724
637254473072EB6172618021BA38A4ABCE2F4D1D704D97A51B23CB05DEFA815B
10A68C56E15847B832825C309AC953ACFED736C92817AA19B2B140C4FEDB4A4D
58CA39FED5B2A28656DFF7A79874494F6313E189A4439CB9DD664E8AE21D6434
F4F5DB5CFAAC78AB942B5CFAF3204DD62C3126527DF11877A6E2D6BB0C5A6F1F
CF89B897EE6F82D6DCF0A9A4F86FCBA03BF650398197DE7F2861852D7C1D574D
C877466DA4B4018B8D9C8C3F733607DF454C48B6DC38E4841B6D916F84DAB5A9
BC40E3EA035003195011D4E44D9BA04466580A9D93BECBAD378BD7BBB207D5CB
E26010D8BC49532143357ECDEDF491BC8409BD91F789A1D2F5835C0D76969874
8E2E13DC90F8A3007E6AFCD43F88FEFE46765EA4F5F8009CAD983FC1E0735F61
F86B7BCCB244AC4F6E52B79C1F18E47E229F5191C3413B7BDE0658CD1A6ED1B3
9068A90D73692038ECA5CCE8C8F332DA3BD3C1E3F1289B31E7DC615689DD842D
95DA414FD7C68B6FD0DB1FCAACF0C225DC5232DE2AC6179442E5C51F727D1B70
29565245DD4A62136798173A12A7095177FE094FF72558D091533D1024FE91D1
B2EFCC2955810F7F900F580F2438916DC3B84EB787E495FD193662F24B603218
B8377E05450698C0D36502CCC5DA7EC670B10E4ECF6CFF53D8868F68170AA53A
4207D188E01255251B750E24517BE95CB80FA6877A0AB993581167C5C147BEED
A57B7EA6BDF41EF5FCD83CCC77C4B640926F8F34605D007AA5F8C05BFA41B385
7D616C1421A80BF322071167A327D024E35FD664BD14E3E768944E1CFF162B38
1A31DD1BDC5592131D6CEED0C2C8375471D05D154778651499DE75142128E53F
6CBA7C38FDEAB441E43EC1B94EB77DF9551D47E0507E87BC90EC4B6B00054D00
7B5FA087B8AE3EF1C1C19420F45A3037D9DC2FCE467B14B211FCFC8EB9154A5A
6CAFC20B914C7BD2237FA139832797E5686269D44B4F383BF4F6792DE381A87F
E27830860961C63D8518A09063DFB040682B24481F31B17ED97DE83CFC791A41
F8DA01A06339EE552CA257552364BC6A5FAE7E51BC73EBFD4E91657BBFFB2635
C557B3CDB8B5794423D76F74DBB51B2CC09B2DA864B54BF1B9C626DF610B0CF2
29069BCC5CEAB98989CCF9A6EA01C395D87E544975744B544715D19B90E4183F
D541F902BCF663C227647091A49C485324BFFF4A070016D05D6DD48E59EADAEE
751F62184B479A8A13B5CDADF3BC6BE22B4BE8240CEEF9970FE881C0CBE3E6F9
7D9C29A5BE990437676FF1FD340C1E5F173C62E20EF1492B5AD75BDC097EBDF8
889A28DAE9555943A6B3004A04E301DDB05A7541378B3E83068A5C249BE5DF4E
BD425520B1CE595DBC9D55B22BC0CA25A85724D366A0AEEB86E014EEB66A8452
64CF15A32D39A3B98C392281A582CD5AE463F0B15F91B799C0FF1FF784394EA7
B65D0A5E6FC69E6C0D83814727C914F0092B3B26B11BF00C367DB66D301D87EE
6E22C8BF79C4EDA18AD88558DA52629C562010D634E083056ED6A58D84F390D0
EA681F9BB8BF7BD19827B166C27D86EF4AAA7AF8098F3833C3094365FC8A2997
6F63E60D7F0A0AB2208F50888BCEFE49CBCC5BF5E64C9FCCAA4D2E5A7893D7C9
2B9102BF23F2B7E4F837DD5501540D8417C3C0BD679A55F1FF36FF283F4E26D3
A510050E09B7C34DDF2B7E06982AEE8F84C744AE59C0075D8601B1D4D4B437C5
7B9225C6319EEC6DAF4BE64440C721E5FE04E2BFC28222CE90801E471E5F86DB
839730A36E6BF3721D41AD4591FB00338A05B1A8068626525DD2BE48CE288F80
00B73281CA323D74A8E6FBDE50CAB61903E56F77BF23ABB4287B456151FF5016
F0184C3332395F44F0254BE838B876E448FEDEBAC20D3801EA43F962AF60DFDF
40F17A1DD2310869639E4D4A809EA257E7C223D97A03DAFCE36A88B7CBECC8E4
4FD769CE67E93C84434B3B6F088D3C695A0410084B8D7E33AA36D3FD1FFAAB23
E74DA35B392FF0DC24B476BBC80BB9050D049783A83B4A05B7A9405193FC554F
9092BD86433C69FC059ED1E43BA44C416346D0F6DB02CC967CC310685C89C5A1
11119904938A304052C27A0C9EE188AA74AF1E970516AE980F517728AE1C6ED1
E61B49F0AF0F949CAB358C6C2634D11C79D4E6B34985F2DF51657B87C4640F06
3C840FE403FCDDF493E3FD6220ABD5C09C7C7DE1B9F8944054CF68ABC3B2A500
6F0EA7549FF48FE562684655B17C211BA268E92B8A6130C761C2A7DC6B36FAB1
3D07594F302D03F64A89ABC4CEBB9BA063C508D00C5576826EE8E1D4CB5AC39D
6394BDFDB2D5539C795ABF6A6A2B6D79BA973203D6DCFA0856EC67162AB10114
6A36284E834F00A7727676D6CB1EB7F61EA7E59C9C7BA796D8662F637E3B7EC3
24A24E3F5ADB6CD15757913484E9A911EE7173D9F6F50583A0B10D76DC0C8F2B
0B7E9E893E21CCDFB8B3D4EFB4A1B4DA37CAC23923E59B57860155B918CF4714
395F58DA425E70E7873733E0FA853595A6B9BB97E7990D6B4F6A00DF889BE1DC
1C898B85A25F1BFC2780D35231745EC02D01B08C915651520D69246B9E410A4F
B6E565F7C219C32F710E7BF4BEB7943A434E100E481FAD1EE0215AD50F85AC40
F27B19EE76AF27F8270A5C19CFFB961C288EEB8FB0215E0AF773620278345DF7
AF9C54C69B016008ED52FC327EA908519F22FF0B08A1E8C2030F382DB6BBC458
7BC6C1574427C197C571EDE90693B98848EAE1BB6120F455DAE2740E278A8E0E
13536F1DB524DD59F4BDFCDB6E0CD8D8122713FD4E14A6DBCE0697FD2658BA19
C61B7F7C1911BA4048FD9C5712D63660912D26CAFC1D1CDCCB02395B2C59880B
79FDE97EA24F59EC9184D101E3ABDD4249A8C1BAA69120A3ACAA7BF3F62A44F6
9F952797C1804B0E028C6B8284820BDF1F5DB12D844AEB302B097D1E8B041E6A
053C2F6CBF3052CD2D23BB55A2E004E04A55E20C76B07841C24421C237E320A7
7A1E7E927D28C7112A37F470E2041DEACE8D67FD13E50419AC7265AC06EF4B10
1CF64B78AC8397B9D4ADCFE94ED836DF41113F3A7E04FED8353A25B3C83206C2
19609A9A3F45DD6A3959921C7EF22695925D3093B5B8A7D8B0BC409DBD26C563
58725DEFEE1BA63B849DA8D64C573D88F1A18B087E506FE8A86BA47EEBFB1F8B
5A37C73A264258BCAEFACFECC344DCB24643AA32019F8BC33601D51EEFF8C229
E45EF5C14F934FFA97746EC47F20D95DC4BB8C2FDE4E06C98999B193269324C5
3516084F637B19CC9CA90B757FE5D2F22094B328DDAC4F6A8DCB5744F75AEBBB
D4A99F6864849E13D6A58ED5692700E1B092ABAB78F3D1EC1116D8F98D8CF705
34DDDB6B2A557B4B473D6F5FD8560F9A061595D5491B1231C6CB95FAD746576A
B7A4189E343C1BAD934291F404BDEE718F5E12C0821814945E34612A0BA9535C
EC9CC6659E975644A47F0E14985B8F7FD33C7E0C285522F1234D038FFAA544A0
68A4FDC322BB0E85A8CC04749EAB7A97F2A73ACA10FCCABC0EB86BEAF3A9932E
32012FF537AD509D9EB945F3436B6D6BC6EC3F051E3EEF9EFA66B65C7F2FD0D4
A77426829F624DE708A785ABFD9DAF2A18B52E9E75868CD148B94386A3490818
F3DA9C5F495146BC52D7A29050B34A45D93105973A8C240EF8780BAE2B2B0B49
8DE9E4A705041BF9C00B22908E148AD74F0005C628B11721E51436E2BA411BD0
48B0974754D9A21A9120982D22E98B94E98DEC8CC6E23C9CF06AAD506316355F
9DD4E26180B9857E57B21B649F7CCFC5246931481790C4E756227DD4C5078982
55DD1BDFA86461DF6CAAA2683AA352187BFE497DBDEFE0D5CC177BA593704500
DF9A9743FC18C57EF6B4DB44BAF273F248D46E3A3EC12F9726DF34BEB4E8A1AB
C54B8D5C3926A307466B310941DD137B3DFC87475832AC1E09463B8414A04DF7
FF5681D1822F9528A33C016440AD0EC205659CCFE68827ECFBD108ED6F933324
576C349C2B37C8AE527C8DE314F762D388BD454639EAA8BA73A1BFEBF466B952
A419058C09569B6070EE9BC7BB4D572810AC922BAAA7BE3EF77DB266EE36E3C2
28BC7387AAD4BBAD69F38A6FCB76B4C606D27FB813E9E81470174BBDF9F33A5E
F4EE7788CDA11933AE3750BFC11086BEDD202B920136C8AACBF57766AEAF5429
E9953A82D018B9D33F2397FB72E152B2B54A975B1AB62F7BA46A2049D6295529
C7D678143FDA99A40374389AC30E68AA1E058A34CD1380A01A38A6E7F1C23128
F4C2EFF4EEC2A37AF3D9C069A9734D7B15A32F42AF336C4B363E162381BE014C
042E6F19001BF5D21F3C0721FD3E92039075CC87FF3EBF1D4CFAE7FF54D1178C
39C5D8EFD405E80E6070D1BBB212420547345583542A857D5E20B3D354590680
91BF39060B74126E8B520B0A4BAB52B06DECFC35DEF9A6628CB5936FF32D4D12
63C56F18C3E9A769E4298A9D61716B1EB2593232A6AFE5C2AB28363CF4FCD177
E2BCCD28F3551DC015ECBE8E88E91861894C05965B388CF729141C40CD27721F
5F2E2BCE2F442B7DA7F621813D4668E37BC6CFEC10BBAF910356ADEDA4AE1B50
554FE7CDE821090278FEB07A0CD6155B782E67020838AC045BCC4128F6730469
EC92538A1DE2B5F14153C93C0CBCE85B879CB0644508D0F44A56C3DEF5FA74DE
2D7A1C4E4E55CFD3DA5E8E669DDD9E94813DC2A86AE9E0DA40EC1F4619F61EDC
4228C374DB5E1CC2EF3E23FBD9E603CBAF6AFD86D53D0452E5FE359D0C18A164
40C85B45FE3AABBAB762B19C07AFC6A05C7D0927CE66AC0263AB7B2A5AE09299
89597293607E855CA0D56A7C81188ED9FB23AEECA0E58DE5FA8BFBC803EC2136
3CD28B1A1C96FDB1BB0D8A1FD9C2F7175BC8EBCD7725F950301F2E5EAFC0F8EC
0E8049DBCC86ACE693CA4529E4A58082AC26A59FE23B830A4FB57B19A1F84063
138FB92D2BABDDB3F44DBA6D51FDC53714221C1438052AB3690E6BAAD87FB07B
31E9038CEFAB58E0D4B75C97C183FD14EE9270F234D3A64B0D5DB86D7CA4A9EE
C7B325312DA14D52EC9B8FB5DC656264F9F742231971C0F3CB0ECCDA60A9717E
393D7A2894A8402E9FE5A5F1DA57BE96D1D5BBD925AA34C9CB99DAC5BF17A852
B0878A2459794532C264A1A6343F006B5C0544C64019F5DEC9ECB36140D20ED5
0A3CBB9E49FE57CF4BCAAA0F6A27E0860F84242C30AE40043AB3E0D5B10111E2
4CF9A3B541BF4984EC84597260525C0FD8F26D165F367A6EEBB612EF529B3530
F2A4A5F02251EC47B8080045AF95F32849727CF88AC1AB5437002BA8A6EEA180
8E9250D92A327281364E95C4A96EC3765DF99D1322DECD89B717579E9BB91FB7
4F070CBA806DBC74A96CE1A7E9F5B75305A38EE812FEBAEDBB7D7B75140C104A
C2DC80BE4D33414A71BDC436AFCC1575DADE38BD695AAE67B2B0BC6B365EEFE8
96BA016A5186F655084055FC6C81CA27601A85BEB382542BDDD00101F0B98D80
23C3229E91202E5E3AA18E212A0383373DFD0B0E51F31021B127F3C5573DF04D
466A52387E16098C5F147CF7E7AEFE3A9336681A1A3A17D39F907DAB85C90AC3
647B01475464C3B8E8414050488BE6C799AC69BF9EF3C9EEEB5A2C3DD070048E
51590BE4AA2B1EBDA669310FF576F9C03F0B30A9DE794D6813925CD83882A5BA
53489C03BD73AC42917305EEC247BB46391AD0470FA06638E7FAC054AEA1F7CC
927411B7EED1468CA7ACD3F0861B9998864AF93908D97F32BA7B311A4983CEC5
C238D2C6C4C082
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMTI10
%!PS-AdobeFont-1.1: CMTI10 1.00B
%%CreationDate: 1992 Feb 19 19:56:16
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.00B) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMTI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
end readonly def
/FontName /CMTI10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 13 /fl put
dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 43 /plus put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 48 /zero put
dup 49 /one put
dup 52 /four put
dup 55 /seven put
dup 56 /eight put
dup 63 /question put
dup 65 /A put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 91 /bracketleft put
dup 93 /bracketright put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
readonly def
/FontBBox{-163 -250 1146 969}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC
D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D
993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363
2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B
E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3
309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513
F42EDDCF39AE522A1DC2D80B2772B05DA60F3DC15A815A6BAFEDC399C7956E75
3851CB3588E22936FBFB63A58300298B11C45D82385C083D07AF133BB1BC941A
FDD9F34D5E0B8087EF2A58C54D8AB7580EE3ED58AEB83B72CB9028F472AA0C3D
5C0DD07F3D20112C51366AF49C461175B32F43B33E558E7595CDB39F19A8B2D0
FDA3CC3A8318A933B24E8018569F67C865E244FB22B99E4297887C58064CBF0D
E227EEC7FBF983837F8F2FE36F2884ED0B533D8876164C232B3D525ADDA739A7
5B1D67800F4376A744863FBDCDA1336CF7EA180D89D2E804B585B56F33A7122B
F3E18BDDA908C412D1709C26F9D8A553B748A11130DF793931F09376246D3EDB
B48CF44CEE72B226A5DE61A7C773AAB8FFB6331CA20A93FEF377E4FC5F05CB7F
2A5AD6B00B2E77ACCA133EC8836CA75045DB9B7E0A5CDEE3D629286E320BE4C2
EA3546E98551410A9F5E76D6C914592E830E02744136E585FB7966B054BBBD7F
6E2E2B31E9000628D6E1388FAFB1BABE9909CF3D445B6D0A9397D34FFB85533E
46B9F9760D5E1B443C40E1588093551F91D89A940D9A0F00DD501B2130C93650
8B641B0D036F18E78A6F5FB15E73E94208C4B7C796C6FD552AAB6E883991FCE5
D96333CB9F994496902A39B732226EFCCFD02D5133185E44D8B87353808631E4
9AC9F7113D0AA8829DEFB53C4D8565A2842B92CEA311F7307672DD9AAAC75BBA
52C2B53677EB1776CE33B59C9C03676762B71783EBB15572543B413AAD4B93D2
0052DB607BBC24669E85365CEEC36242FE9FC9A6AD7F7880546704DA821F5E43
2CBE25A94607F4DF37DC50972CB3F7D2FD73A5A1E3789DEAF8CAC39448F0BA5A
DDD59BECA6105C803965D5736A60D0A25BDE5470FFB8299036C57EBE47966592
FF88E92B29ED655E2C5BC83DD3840569FAD2463715D32682D41A6390A4325A5E
B8670BE90B7923616308D8C683E525095C0B9956C173D9EE46796CAF2A251056
BBE68BA1EB77FA717B12D6A45F39F1DFFC5A60EB8F84B5F8EDBE87F987EFB652
4A971DDA9BE2280BBA98D6C0184D55E43DD199C2A9732136F228996C34CCC78A
73B77E59774A9F95DCC00082EF28EC1EBDDA058E9B1D7A2E74EE3033D58126C4
287B43B710F01C6642B812D062E5C11EBB9762008AB130B022BE08D050CD8B56
9B03A4F07BA01C49D39E044F7842C13F000A8D8249C4F1014585295F6B9C866B
C704D5B1529AE10806A5F5F453496FB0CB31BAD49260D50DB45E2046C75DA826
D79C477251B97B8F774D2EDFC8C62AD501120BB1138043861950BA03127AD0CA
A732060E02B47C04DDDD8349F35DAD5F0883C6634EE23E60F152374A3E706F6A
206704A0BFE316CB70F8DBFA86DF496FA7AD3FFA1832047A99AFF39203662A5F
C94FD9054D7B306ECA6D02A0B6203D2FDCBF54CFC9B5CF9A87F615FAB9F68EED
65A3162C0BEE875882A1355C7095A2BE6F85CAB69A071AA5C282E06EF65AB829
12B806895FD506C3A42B546CFB461F2D6BAED71E3B0D4192BBE7CAD4F016E18A
2CA55E7ECFC7CBD4E03A06C1E8BB8C6C300150DFA87F5D674BF87037705FB736
BE611C1087FEDA6B5DB0BA9877D3EE01A584A61E7FB41850FFE050A0980A0296
F37DF8CEAC6D723239204B8CC7176F720231BF7CCB4384EB1C988927A36C2A9F
3B6BF736F4F6A35606306B9D16EE2A3BD5E44185DAD339FC083CD6177E6DF2B7
33C2AEE8A2717397D295E20AF67B00B65CCBC12E42F2061F893485CFA477C9BA
EC7DF876396DE8A0F19ECE6D6B7257C62C286DE6BE24D0B2D55B4A8584277471
7B1CE4601BDC8DFDF0612713F22AA1004E264852B835CC571B74DBBC46BC47A8
89B193DA4F6557604022AFDD2906910AC847DAD94DB01678459F5A65768C9CD7
FAE898EB888998A4BA8AA22D4FC310C1DA5E40B7C4E7F8AF1CDEDA9292F97B77
07978ACA37FF153DDFA924CA6A1C8999C583DB1EE63436481C62FD6622602DC6
106E6E903A19C20F5709E78A42307038DAB204C1EBD37118D3E9BAD2F3FDE356
D45B81C825650EA29B960C6DFE939066F45ED299C3B14322884C65B2E7C48C07
F47C2D042F67678FE46150E923720F64DD688B0102B5EA70A925D7224FF44865
E2C8B46F73A67502165EB6B196D36A77F085F3517CCFBE350907B3B54FDB39D7
9360C851952EAE36C9FD05BF3C561B0F92DFB203E1DD8C99EC0452F45A3C44F1
00BD0E95327322344DBD309027BB39A4BD30DEBC5380F7777CB25BA7066E9D35
4F71856CDB0C2F9BA7A53188BBC0714A7857956F2A3FAD298049EEFA3AAA5509
1E2790A73FA40C5B7A62A81624BFDD9909EFFF3B414E9B7A859D8E2F2FE7F7DD
2A9B79A6E0F47BA02859273BFD5232F6E9D482CDEC667C2928D0A882CACCFC2A
3B55B8EC83C19C9D2CC58B67A470DC72B1A2EB0D28B7AF8C16567F25AB02D28A
DA85224C2554AE90A2E1A3D03C234A1352F481853C0E584CC97046128354E218
94B6A2966CD15CD7E0593146CB926812FBFCBFF0EE1DDA2348DAC22172242FDD
90FD1641CA01E5F46DFEF2467477B1E4ED760591E9567E53A47D0B461D5BACFA
E96C6909909CF8420286C730D973E1575EF33C98EF2DC4841364FEE627E59BFE
16FCBB95E29B481E589DAE851D0E3C33C8AF3A8E69A47B8B38CBD714C8A21548
2978E948417BBF1B2520A2B79CBCFC8DFB54DBEA6F13A0E4C945369AA698E781
BE72611E35CFCBF772C5E80655563E8283668FDE02D1CC578B4EE2A3DE7E6B45
362281F1867C293FE8B6AB936B65BAF797FCE7C9D69F953B22AF7474BFF27C81
93C447796C10D223F336AD57C846B97E4BF7086354C17A8082602D83112B602D
2ED00D995DE9D566ED1E2654670788395B1CFF1743854FD4105FDDBB206B3CC7
0905061D1D45C72C818D329F7486AE2D6AB16287983EB2630047E579AD92B33B
AA150F8B4BAF4DCFEE5322651D5EF9EDCCD729A7E2CCEFAA3C538104DDAC9D75
C4C2206C3C89CEF85A2764D08A76DED5842C59F85C424866BA6F91DC5414FBA5
56751F597776AA8E4127E8925B0378D2C152AA882635B7E29EA5F77255362291
A4AD5F034441FA2F9AB46AB20623EAADCA7C94EA945B400514080811F98A255C
1BAD9A9E30BD9E6FC237DD3603B6F76DBFB50B5D84EA301654B634ACA85BCA0D
5532804C3737E04E502EBFDC4E017FC3E36B6E5B04B13FE4298E1093BD7769C3
6FCA15DB00950C7E102F9E3BA4891DAC31E59410166EF602E1427A69E3F02AF3
452B4EB376420376B06EE4EF517E419DCF4F47473C3222D7C9FD1A8998F68F07
C4BD30EC0B4145BDDB8F224ECB0852E068A1444F5356A4E245F1693674FF597B
9959238E431C7614E4A0F83B0023D08FBA0C8850613B9E6CC35D79D3F7B9685C
FC503C4237951AF8A0E6D7360619FE015D8A259075AC1AF02B666B6930FD482C
3F0E2D7BCAE50B876CBFF72A14DDF71C465216049CC476C1A5A36670CF7C163B
D8CAF17724B300D07B453936E16AAFBE0CE2E348765B07030F9A530A290E13FF
8E93DE3645BE5D5FA73F9B17DDAADD081C73EA430BDC8E9717EB504E75B226D2
21152F3C96C5018CA3B66A48F2A7C8C7F136F6459E8F0B90415F597A44811E66
AAE7895AF9E92D2E1DB1A5FC8A7ACE54D4B7F3D389A757B752FCC629BB0896F3
61C9647B4FA759B1547826B131C9B02493E9D94750AE8727A5B2CDFAE62FE3D3
60EE079BA708D02CB891EAB7DA0D48C99D505D5D29070FB67C23B500423D1B92
E82E53B4D3FF0511F5745A1020230FFE0FDBE4D8FD037E22AE4B074C1F1C70DF
E354A5AE27509739C0BA7A252A29FFEF16C300B97807BEB8DB2AB5EE5EB3210E
84756F04ABD519BDB55EBCD13961C29A60DB0F9DE577D3EE8B3DD4E283D71139
2A57434F73AC246C5339D861DD02BADDC2AE7BB851D3863B5D3A93A34698E9EB
D08DCA75996FDA093A37A94ECCB6B815C5B49D0A64F33C6B17CA906CB472C76C
3136F9B2D17FF44D86B80B80AA7FC74B42982AB39B7752F2CF59D04006E642C7
061CE7FAE586BE8BB5CB6BEAD8FCCCB1A4F55506C8F47A65F120573EEA9B453C
022220F585EE1CB48D16DC40961E1C549D04AFDE95C7FDF36B8340D424F875DA
8056DA00D0CB9297ACBEBDCD7597C4EBE6D321AC3FBD51D9E28764746CD4A5D3
FF5D8131E85516ECC18DC449DAA79E7C883911C9678E49EDC66FF16C20DE4B73
8B6D27C8CB1BAB648039B96B3EB8641DDFA7BD839378849C2A06AF782AFC265E
EC16828FA0A69C7BC741397271CF517DEB0C2243B30FE6F8F9EDB813D3685C8A
DB8A13909D50C91E0C1CAB7EC07278929E595DF9B0D06A422574F858DEAAADC2
1805DA9E1A967417F7C867AB4FDC537C4C221C6BC819D2175B5E2DAEDAC34FC1
C4B694F7914469F35C0A97AB13F1BBDF6CBC3BC326FFA06991B7DFC13A3A19DB
D1D552555565C88E2CBDDDE0101583ED3261014BECDD7F9E771AABC816A9744F
95366BAE9F453E7C839E52F142819BA0E1B6BCC3B66535038C5B3614129B1408
FFFEEBE8A5A2BA75B6BC4A2030D8CA08DEC559C952D7B12A1C7C14D9FA9A36A9
7ACDC56F528C4AEB40D6EBC48F69FAE6D9947E9B1E87193823B8E55FF33A2A1F
D8329ACE6E1AB3DF3F388D357BABB6BB03079178C24C26B1D976C36A691B2AF3
CBC1BACE9BEE4AB3D81B4FA1C688B1B777659EE0FF43AB335EFF61F5DE015229
CA2EFA0423DDE5908A4A935D4CC504DFD33BAAA48DCFFFC16AAA230A624C40CE
CD9CD11C06255E9A49A9370ED3DD3A5489CB62E4E2EC47F02B27BD52B46D08FC
B58D84152EB14FABE7959494D4F917AB02C8E5A09EA557E5526130F3D5F9042F
C9AAA1D367FC0AC66963034937B3DDF83AC20B7C1A70CC5532B8F1614F55B97F
C1B545A52911CF60DDB3E7791053561373DF52B14898F4D71A3A9154C132381E
C69931B116ACC9C7521AB51F69E5DEDCEC644E7DB80C2429CDBF24DB9727A7B7
8243277EE67EE0E40008716DE0D1C25DAF66040D59D4E6D333F33DFC83B5DF0E
2EEB5526087E503C3AB25A0C584709EDA55A2E3B31261F9F3EE9AD5EFD7F3CB0
68E45C24579C8C7EF65CEE2BC4370DBCEB4282717637F4B7841E5F6BE217D7D7
C87A36F2E63721623E365D1C12BD6946FB730B484FEDF030F4626F6F377E661A
CB00838996F3A1375489D5EFD3D9A0775A3ABF8CE2C699D90DFFCB718FA9D72E
AF11C678511B40465458C685B94A7F64E0EA4C1FE14B85DEE2B67D24956F1C04
68A30FA5D763369ADE22057C615C6B87697B45CB830051F7F2A783D6F32ECACA
AA54FA378087D7B569597DFE9B0AFA9AB0644532CD69D9FDE6F4AA171A605078
8ABE23858205A06EA4AB28A91210E83C2520D020DF6D828F02BB0314BC772082
0E8C06778580996D85922189D2328E0EB6D2E04C3CB8EDBD4C4975C322913F15
CD5BD697E6E01635FEBB0F24C10E9BD2D04C0683F712B162AD153DE692723EC7
EFE49FA62D9C8D114156E74FAA03E9D665860371BF0F7401BEA14D99246B4EA8
0A5AFE57DFAEBB20B043524064EE322805F812D5F45A9915D5F077A8DCAAA2BE
8F17C50789A7BD1AAFCA8F10FFEC81033F495EC2F956B162E46F6BFC3908700D
B414853C56C6F847F64A9716274E2B303D8BD59BC3539412661660B4660CA144
DB9F1BA8E9617A6B1A9BA2656D0C51BEA358A1D77D8B3CE1E2A61EBCE160DC9A
1F5C8BC327B95899268A694EFDFC3F620486FD3FF95545BFAFA63B5FD8D41028
B547A0D31A7A69AD4C359DCB6AB245AAAFE2BFB53133DA61C7383AD368D155D0
34732DDD65CE4CA0BA1AEA3A071DED28BC8BA9DC05DB01D11888630BFDD54ED9
9598BC2489B1A080900E5D676918DAF6B69401129F7F222BE9ECAEB275B2B7C0
714C46E1E91FDBF906757C3921A3C429377D2DAC5A278C06FF81F1335A581FD2
E0482B6E3470E1D1389B324AAE6D0D493F368C6DF19379CEAC9333FB4ED8F83A
C9D720293712AD931E7F36C41F102168CB54E5EF0A60DC00DC6F6C5E4A57292D
D378B46BEE9EB0D4F23CDD8DCC846733CB65293854990C2180826B3724223DD6
0AF006E7E99FD236A8546E80FC466E7AEA138B8FB450E460F16DC961D7EA7375
736BDABA09CCAB882E48652EDEB8B2F0A283E9A202D2FB03CA2B8F041A3D5A44
225DDB4F51B26FB8140DFEE90CA66CE9E8FFC47DD8907CCB9A6DB58E098A36A4
A11F8492B0B161F414948E0E00B04A44CDEF438E90B986C87A6CE139B28A2235
9382AE6ABA2C6A157B50512B30450B15320C8E39AC15894F0984BB92375562DA
95C7B728F560ED8FAD1F02CC38728D1EDFEA2ADC38FB2DFD0CBE83EC4E7987A7
8C63F969A333C843922436A23F470B24FF80AEB7C91B70FB960892BD3DB54066
458817DB0FF4420D20DBD29CB89F27FD7E27B2BD86AB7AB48A0A563D810A8DDA
CFB1F39E8BF4E89779A02094B00CE7A764B3C63C39B63E77D61C3D42AC21DF48
C05145177017DC84D6C42F7BB225348248776ABF6011EB7574B5FD0E3C50A6CE
FD2F4885F50E7834D1FA02495BBD19219D8644EDD5188D78758BE79E22B38697
A7FB95894671A02D69FEEDCAA516069C50247F62F085907DB0805C20B791EE1E
71DD491175544D3B7B30699E3B39BA23BB03BB1775AFADF6CFE0A3FA5CBD1FD7
1F7B632E5232188EA8527CDDD75573E32B3BAC646AB3350B6BB1E7758651CF9C
641F210BA459BA63523CED5F25876E7E02DD5160D3F5BA2660ED62BA10E631E4
0B7B4E8E2EC48F4A1439F510E892B05EAD699C63A8D61C76109087B45AEF02E4
7F5FCB05F81638E64F9C67BC6B73CFE2BE110CFF197A85961E09D77CA5844CC4
77F8AFC5FFEEFA32B74828432D97806788019ED3B179622E4ECEBEA219253936
CA8DA1BECDC6400CF04C17AAAB570BE45C4013B41CB7FB46DD5475EA907AA1D7
2FC71C8D73034BD078A25333CEF45C522A6A9B5CAAE9E965E40B392402AE02F6
F712FF1A2CC60243F9E43E8F5F6331E02CBFABDC9794EAD4956837F2BB91EDDF
F57ECA1679E5C4298C9DEB1823B0E0E3DE22A627340B02B9C9E6B3DE6A1A2E6A
782881DFB5499B058018CBC0EAA9D37B3020F667554779B6B45D0A7E025E2A4A
8DDD9945E9892D8D0D816E9F2FE548CC1292C0A45340DB0298B5810D473B5B5A
BFD7D24859AA067C9F50EF21E02827000CCC86EE3455F8F6870B56D85628AE7B
A5A45FEBDCB25CFB699E861289318B97A1486FEAD36C4E22DD5187CA4171548E
57162A8C43DA676C81AE7B54D1F5A8D4EF5E0ED7B6D1D3AFD3EAAFEB20C47B0D
60400AD933DBF8C8F7A2A9C7357D1DB338B97D80615C86E879588B8FC6A87CC9
ECF7938CA51FDC8823AD8468AF68D02756A90176826B16A4799B213863C49802
9877AB18765BA5B8622B10A43C8889AD14B3FB645829D43B902C4960CCCC82FA
66EC999F5B09AD60A8D400D75771A9CE391B8FFAA15416558CA73CFF49F6D70A
188EE2A1C430BEC55095D31C547ACC93CF5C47806B125CE08B431FADEF61E24A
7B592A292C95A4A6E101E4FF752AC37B6EC4624ABBA36F80956F440A4BD9D395
7216C2C32B52A024D4577965F8325614C64BC7DFB2FF9C2AE467A63E16546E75
3738ED276B683AA86B50BD77AC1FF59C3C3B0AD827CCD637FFB47A6255F2D6E9
D6163FE69A8FE317A0BF63D3DFD040F73E4C0D19E03FBDE49E644D64F0F7AD19
73EB10C38CFE4CA56403195AA22EEC0B587EE138F14A4E243E516934F5978DA4
DF781E66F62F348D6B3C485F20BD0531C0B400C9DF1E8198BA856892C411281C
AD4F4434DA78A2654A343BD04BE18900ECDB81488DAFCF53D780D1DE2BDCE47B
DC3C789F6C39C2A7F4D1EC4B23F909CA07D0F6293EB16F07216B10F6B412C06B
2FC08722BEC44C2BDFE94BD0D08CE417702B5E83C2A274FF9EEEC7B8989AF509
0431111D303C0DA575556485BE37381BAE6A61014484A1B6D3075ECFE578F85B
21098BBB7E0BA559BEF6D9739990EA304725E0E63F8DE29B89D1CDDD3A812D8D
8720023460DF0C86B852AD011512F72836F449B0C0B24645DAA5A3CB6A5E8C87
1CCCEE0D2F5289A23DE35B72E2787A45674F5CFF015D4B36806F4236873F423D
39DB639B64714FC064CEC2BFBB3D48D7648D145FB88ECBE9E6F341A04DD4B969
A36A8736A541613646BF68DE6E1F02CF09652AD4F31A849D6909ECE26710E2CD
E36D78D07AC43B273F04AD1ACF66331116768464422B28C7D87C0EC82A3525C1
D238DDAA1486F874995B1B77BA659CC7DCBE4879ACD2034452BBDE6FC142D28B
8F59620FCFEA822FA8F7BA2F5832F01AEC72D3FE1BD59C47908A68ACAE664F40
20F749B558E73FA774360522E637EB0C2FE92264401B643682566AD897E49FD4
6126FB5D3FAE7899472F10D7DF4E23A0513AFB2A0C37F2A772D853D9977004C5
3AC09CFA8E0261A1A5BED6343D879F65BFD443E933880DE50900428554BF7884
BBE5FE4ABCD24021FF3C42BBA1CEB861D49F9FC1FCB7CAA0A059496C470CB88B
D573513F354683D883755AA8AD38673148031B7433E90A581F5343B1CF822490
51DFA9C2CC186A21BE81F37557E7348754EAD1B0E6DF852B221C465D28232095
ABDDE7184ABA63AC7A1B8C0857F95FA6D8A7D2B7165F5FE72096B3B2D23AB395
38FEF4D1395D19A40D646CDB3EE2221C4DEECF321FB97F35D611F07146CD2F27
D4F4328B0872AFA4B9E4DE88A7E947F13B7C9E9290888733769FADA27771FB99
215D428771462B9DFC6DEDCABA229519CE611C1B2EC7DF611066D97C06B21676
D7FB905525E53E202ABB2F3557F3B211482A72B641E7F3C2800DDBBC62EDE2DA
704D4673D4677151D68A56E3827BB740830B931FF3B49A9333542CCA30AB8A52
6F2569AB4280546D0C59F40040AE5F2761A25BA4B072E9A1425750EF53314748
A8CF5D416A7F9D483793565BDAE25F353DDCAE0519B2CFB40A4006725D25F750
9410F92A8E7535E7E396E711A8B6FA0DB0CF306B5DF65F2ACC386DDC34285981
B4CB26076DDB76F9E9E42B1C742989E862280DA57901DDBA031B8FF53D5E7259
9CDADE6B03AB8B43CBF9F813FF619ADE51DE152A2BAB057DCA83F29FE4818FFA
AE8CAF344D67EA44F16DD18A294E9D9936FBF1EF9CFA07E60264019DA70CBF1E
B17AFE2DCC038EC951FA1F0C44DCD754384AA4A02B4565C607AC25355BDB253E
FF14C835D180CA277A143897E54F43580EF028EFA9A6987CFE9206D1FF3418CC
1B800C51B9F30A36BDAFBDDF7121F60C5BE3762F54432AE65CD6AE3EFB14E009
D654B541980113A5D9B954BE8CC469CC9BD20BCDC63F06DC4C0D7D6890A0BFDC
479A4CF4FAF802A553510A84A86FBB2CA44E6E5BD9718722C50C0971B058E4C4
34719A4CB49A68C8DE6DE57B2F83E787BE32BEDF6A54B69FBB8B142EF20F19B6
2EEFAD5EC156B82C7377757128064323DD5D94C2422B2BF9ACCDAD4590EB476B
19245E3B7611AA808F7DFF4E28F4E6229372D43AB6DD7EAC9CA220B47C24FF20
5BAD24D6635E19D2BF29B18C9FFA769AED5006BFCE89FBABA3FB989BCE66A3A1
E268A601F67269713474679A6FF488BB3669B7748B13F173CEE4211C66323211
3FCCCAE7F17B93B0BCF3B3B325E5A6341E6FD80F8D889A3C7AF6DEF12FA5E479
ED817C174C83522591F6BBCB8D8F7DA298A0895CF43D3AF155F5F6E85B45CD72
5B21375F7C37FE0F8BAE62A65EFCD1261DDAD7AA1030C62F063474962A61CEBC
5F4D51098BBDA966F05A3CA878EDDCF9741D9FACBA761070BDD0702463C46E9A
1502A3C654D73EA325D049272506BC549335C9B298939AF898B12B958B83D168
E280AB485E482E814FCD15DD9534C4E3D628CC55B3A3B4505984C4F527FBD903
A83511C5F76F9F82B77B3A210D1D6A9249DBC3A1A9FA699CEDA1EEA8C8BD6DDE
093CDEDA398FC9F88689A7E5B88192E21DCC18F0A7E8C6E82E2EDBD90E7EAE2E
5139743D93A8A61691F7CB13B88D0C5EA514147AF776AEBBAA1F9B9A7604D8FF
FA50EAAADF4A2977E069855C139B7AEE286039993B3F485220CF51411D8B2D7D
040E264D2B00B09CD34425CAB86FBD797BD3461B4A6F25CCB9A42F4C3D9B4F6A
093AC7AD15DCE21D75C1A39AC4628012C80FB48D32EC59638FC25EBE093D98F0
E4ECCCDBDF8D7594B46CC7D2FC554EB034E536C572A467BCB0C2E523F81C264E
178AA4AA1B273A1DDC7429CE0A9A9FF3952CF67305E23DB1AC795138FDE28605
FBE10A06E3344A90A96869CC88C2F9C49C12989FB54D68F0675634A80060C300
49AF2EECE0931359C4459C651FE0D4BC00692238553E7A99A92CC6FCD4D84091
8395183C503E99F788FAF656DAD4821059E612680AFB38217D8F31AFC419B82D
AE2C92D508661F6234BA2FBABD23ADA2B45F6EDFDC7600A460A23CA29C120A68
603D4BF364A583F67A1ED02F25D6F641C6FD66BF5085DE3FED26F1F9C0B14521
5375942CD8C5770C9030C4CDC509FDD913E1DEDCBA61007271F9CF0CA0FAF948
C55774656069121D8CC6BE7320EBBED500CB52866C5647BE014CCABF0E5D9804
31E3956690725D9F5B586BE9392B7124F65D21A61B892127FC597531D16311A7
B273487E97556B80348B3C8D6E871141689BC4326FE4AB986A87554E992C0AB9
3548D787A4CF3234D506B2FD6A00FC71FE386F5299476B49AD8F84EE2AE335CA
9BAE1E4BD0B0687840CB3E1CC3CDC43B6D31F2EEF519557467083C836EBFE3C0
0954B5C914D876CAA29F9DB2287632562EF4878F71C5EDBC2E33ADA9FCF06812
AD6EB5B8757950B1E02F4EF8A7A671284CEF66FF541FC7057E2F8CC1EC8203BA
9CEF0221511402BDB173C7903F2EF5719E66EE1221A3614645F95A99C423621B
854B6901FD43ACB91BEC5D22E56307550EDCD40CFFE71B7BEF757B194448DA09
C0A77D3C15060337EE2629F8F4120D3A324287C7D1700F458C427AE112BC6DF6
79D8252B5CA0EB9264E34205FB6DD1F3B3373D7867F522CAFCE17317FAF975B1
F49BE9A095351BE4F25E3C19A226087A4829BAFCBF7DE8EB33B67DDC8C0A5CB2
474483038D99C2753A1B30F03072B04BB7B0AA22AD6C0A3BCDDA575837494041
1BBEC02E1AED1CF87FDD5E957EFA5E6DE5BAE877D4098EB8BD0EE02B78D39BC3
EF1EDCCF6B71A65F7E6D29FCD2B2B074497AAD987096F5AEBECE16E56939C7B8
FE7CFFF5333D3A0847442869EE8FB23D6B5AC47A75D57C4C57087D871EB6769E
586910F290BB5EEC6EC69BB74897D2D0FDF5EDCAF648873BB3089A96FBD340EE
C790808AB95CA866A5DDB20F5B90332566BDFC26DE3102DD795ADE75D7B3D81A
07CFACA73D39F18A86EB3DE8F2F9CAC6F2FB9383D9A583E07AA8C2171FA0980F
EF5E7C83CE62407B1E389AEE86CEC01F1A54D83E5D07702F175973DED849FF0A
ABFC1577F5DED99459FC8772167B48E12CA90EF0A0ADE00A318D71DD8DAF8E8C
9F98F1F0D877998ED311E796A84790F22253F18CFE4B4E89497B2391EFC05DF9
31E35FA4679238522F8360C31A66D1CDB97C8F4A6D6A3B353A82A8713C104FC8
6F8D2CF4E2AD471457F2E0C86F7EC5D6205B1607CAD3F252E778B6300AE78025
016CA3832ACE8C3DB530A5FC7FF959B9B635D1AD8C8DD25DFBE9F4E7C8719C92
3778A16CE3D5536DF01D47807E3C7195F463CE8991E5289EFC81EF6C437A5C61
E270E68318B8768648E3FD471F4D925559E7852DBC3B56E2247941427296054A
7C6ED947B1D16806E4B1556952FB9AD5C336C221D7EF974A933F99E074CCEC85
04AC5951728788F0E440FCB002AD90F9D0E4BD78437695E47322F009E56BFC27
EDFC15BC47993ABE9A46DDA240ED7EE184365768AEC0F87FBAC63DAFFFF1E5A4
E5C4871E7E467A0F9EAB657475E7469DEB205E020B2DAC613691FEBE8FCE7ED1
0A22590116FCCFF149658B3F89B66F8A3BCBC9D5D9CD03B74ACEF156A8E33AB9
0FA03BDCB60A5728503F075D80C92A53A4521D5DF8D54BF5AE2ABB0A2DBBB290
450C9646054F34688F4AA30EB9D9051B8F00873F9A391C831A1A425E19CAC0FC
99C9136A5799BC05B7D3C18C389AAD78184CB964378959F1FB9962CEBC27F761
6C2E9F3E40E0F9EECF61F9C58E92E743166715C939A7588A57175C84068E40EC
AB72135B9D21B5E6B1E9F5F0AAC4DCE2AC0E3D0A2AF8158CCB59BB322A029654
138508A851B59E5E0EDB0F4554B9908BC23D830F312DBA39202D10C1F5EEDBA3
7829DFCBE1031465CAB624C99A4C898AD1EA169E5B9E048BF310D723840CDA08
6CE131C806831165325C9B7026FA13C007FAF879C0DAB299F615E845CFE93173
E1FB07789ACC57EA8BA4036E29482C9E4E3AC859EE565A0A8E1488DCCC4A6D31
0B16F6B88ADA868E47CED3C9458FB8FDF0AA65495497C3917B386E1784F2B2DC
C09F28B9A29F778F436A557B6E532AFC40CE748416C64F6049BE58DADF4E79B4
C505B654CA274E120565ECB189C1568C3FBC7E46520E46F628AA4C3199F50325
8D56F09274D54070955AA256A36F40BDC4D323F9558A1A803EB81105C1C4649D
4C2B1E079DB3EDE68794793740B107F95526F0A046B3251855BBC82689D4A56B
1D98A008F92268EFDE1C54A170EF6B3F484FCDF3D44BB09FC05A6A5EA5EF2F77
8B501DC7FEE825B1D19F748BDC7A5F9491CA040E72616F8BEDE6574B71CE3308
EF7FC9E81D49734ACF1845C897338B580D7304ABAD3679E881BE2E83559A8247
1484B1E2C6356CD61275494368E48200C858C4231FBAA7BC2C5091DAA01FE994
5A31DB2E99C861B765A2D72A16F8013B64620FBFF4779A029999707FFBD70742
BE50E0B15FAC2E7622DFF65D62DA54FAB7779DEBB17D5691147CCDB055EC7DB7
12721CACBC11BDD59E900AE6C463184C2F82676C92ED68E5A14B1BF5A4B3C50B
6E1F4D26CB9A04C191C6E5D0C613D574FDA56070E0C2F9C899F6763EF5F3D20A
166439A55CBF1DB2A9046D9C57881D9E1F6A47C3BBC94A63FD5F8687C18E0113
21C84BD62A71A50C8A8D329D801C30F82E40EEAEB69213E43F83C981C595FA85
E4746A1FF715F64E6552A373B31B737DEE550FF74A7EB559443BACDE3C2C794B
FDE14C997B0ED5939542ABD80ACC7164C6F5055266C16343B9D928F92244BA42
878FCC67BCC1E492F2CEE13ECA7FD9B1A6F1EF95780D57F7F3FA494C1B215BF8
1895B7F2D8D78CCF5729A2375D0F8374849F39577F5F8043B5F468EBD7AD352D
0978E0C7A9A50DE126C9CD0F9786E2DEFAA37085D4C45BDB0F17F26156531A62
8FC7A571E22B276CB9650A16E65DEB457C4EB52A783FFC0A0E94598EC9520BCD
9EBBF66C0E95FD008595F7D04EA3AB12F898B2039D9470A2CC8A42E05D505205
D37F7EED600C48DDAC0061CCEDF7657E0D88223BF05C0DA3444616009312F4A4
D78B230F1E3BE71B00CCC2CA57DFACA6E33C62AC7DF26A699F038A5600FD886E
DCCCC79D1205F5C24B4BC46AA2413C8424686E423BA9A39C1791F666AFF737B9
9D6C77F12B8B4D703203A64D8C218EB62B8FBE2003D887BDB01B3FD023DBA9DC
DC93844B821EF2134A343F3D19D6950C2E252B5C7CDFD8788D98671A6659A0BA
2EC774C344C4076074AC2CBCC82D1F7EFA84C9C6E845E857E7A2DE846A3771E0
4EF3FC48429693A6A6DA5AB11B5C5E40A1CBDA528977D33A06C3A324B84CB095
20FCFCE8BF2355F5D98391F7215549AC2A16C21B7C98CF0CA30B9B2FCF76DFCD
2FC837176C29C9893B4BADD4F15D6DF21EBA3BFBEA25787C07A1CBB7E7397C41
4D331A9986E7780FA9B2C6EC39B9F5275479E5C2528B4E6673AE595FEA23AC61
A402F71039739004AFD3C68697D0E148E7E20EDBBBD154FB207C2FFFF9390B1A
F90FB3F89938BC7D85925B76571D0EC9D640FA9072B67F794EDF50D24F8A8CF3
226B6D8F1154C38DE11721333675BB20F5AFA07D737C4B78EA60B1F958815EF1
6EFEECD9A513C6159C594C7340F5C0E90CC9D4061D65F67F0DE8D71271385C81
E72A16D8A8315BBC42635D06377CA735819B8F18533A4656D16C58C614406E96
8E656761861CAEEABE30D1EAEE48231B6628E958C9DD69B43BAA0E2670A4EA6D
AF0732B5E7DFCF225BEC7F429F29B3DBA15310CA51347013ECB6970E8861EBB2
52813AE56B11C03CBEAC7C1E14C63CEC3394172E7491F551CA60B0D3F672F5E5
E97E33BBC6882AA89E71BC28E64649D80D0D012E9B020F45FAF08FAA0C27949F
C581CF2E2B06C6C9945D8C70791397782C7A4460EB4E1BED76565F179D731C91
A0CA0CE70755B48C7CD9333CAC1AC3AABF8626FE2E6ADA22F78E478466AE4F27
0D51DCDEEB9214B28613777FCC90580C000EE8F16D85BFFBB0BEBF7F8B03A0E7
4258C061B3836FF3669837D5154CFA17FEBD9A41648BBE71A6A2FD5543047E06
3C0F418871C7E6921954BAC0FBC2AC3821DFF16082912A05EC705F213113A862
0C9C9286858C1E258B95837DD233EC97C4F4F85EFF34DE72FFD034A347C77E84
1CE73950117312BC0198017B3D60B4F3BD9D5E9EDEC0C90E6CAC043684619DC4
1B13597A25CA264A231F57F955EA6C3D27DD0DA6D7979671E62B4196AB7F20E1
A7C860392A6B9A8A20722EC6450EFAC01FEAA5EC54F1490A4E7E6D1DF3A863C5
4C37482C5FC0949014BA9A5C47B42E78371239951ED0988EC51433E7BC810785
87D8281A74E1F012E2D20E7C0075C3B9388BFB90AE406EDE92356727AAFBC963
91FAD08041390627BB6C1C1128B7309DB75257BF6E8E61620FDAF1A1D5AF9D68
2F4F454C1AB179CAC16D23E3D069A0CCED39D36E295C9B721AFF5B57B5CFA175
32A49B1A17AC4328C626EDE3E0336E94F5E4997BB8EA685C8D643BFFE1201F70
2F82097FE7CA4289C5F5170FEEB5B82FC0E998479BF92A115ADEAFD641D6DE37
6A0B7CFE3399ED888C1E0AD7597D457BF47A2029252E7726D95F1406DB41C4EF
A4BDD2EA866EA977608D3DFA8FD5A6B08F18BB8BB481AE0DFD04971E196EBA4E
18D6043B1763952099BA7DBBE79DBE57AA9E26ABAD2E8DFC685B076C4F770A1E
3495ED5D8D96B9263A8F26032706C6BDA5E61DF22823A1553E06168C18B0B952
2EA901859C1D963076F73EECF93599CEC7CC9D2D9399A5D9EDF0863D82D8498B
A0B4D99F409042CAA9CD7CAA5477D5D4F535C87F370E1101068E3F4763FB86F1
25689A448AA95AA21ACD844137190DA4A0F12A4B1962A2ED9A7A87D663C73FC5
30D758353E2D33F3F63EC28912B73277B96B98F7C7705BC0A3B7BE92A505B43A
F47C5ED2B05E9556959EB89E0621120B4A509486BB90211A13B0B5490CD92A11
25C10E24601A497DAFB378D082E7E8930839F62B01738C57E718C30F9F3A8FB1
061A27D2DA45A45653593D9DFF1A3684DDDC99E6FAF6028629731A05E079083A
EDEA66DDB4F083FC835618E7965A7D0AF6C8E8DF37E3D7DCC275F746EF916A5D
202F44FDD56DB339F7D6DFF48619838595AF8EDF8E2F34C5221F19748287149C
B02FFF47DF3C4AAA29A4E72E87C3D6464D0A8693FBD6890A55D2562E709CE2B9
CC9F52636FD1D46A547B93FE2064C5A81F9EFC1045E447EAAFB94DD59B0498F4
9FEEA4EDF678956BE49CD8A2C4760B98196CE149ACB2C8D9C5F458446C5E3342
F34B1F9F1A7E529CBC21A50DA3DE6FF9635DB65D605B3721B647A542839A8CC3
8CEDC8DDC0D0AB5FBEF5D26F947F423C2A1843210AAAFFCAA36F3F44DDC88BEE
841F784BEFD007557AE8C016CB6E1CC445B054870E3084D9FB22DB7796B8C904
E3150CF0BD808F27473C4E630BCEA8FDC2D39B7A073DF2F5430F28C29FE71ADF
01FD80B8DC9B5981F936C43B618A5BA2FD15CC7EBF16025371D4EAD75F9F7752
D38A3A812D784CB8966CD0F559893B3AF8DA545D24CF28FE3CE783BF4A13DF95
17AD4AEEABC42BB7881544759CEBC950456BA29C17F5AB3FDA53AC3B23373617
CE6A30D6C6BDB3A8C29CEDA09C6D918F32701ABF749D6752FEBEBF519D012C43
26834EACE58CBD5AFC6416912CC49600EC586D2797EBF77C40E80159150628B0
4C4625430867EE6DA024AA4FE6BFDE9D8B45B1AB575960F56D104D2F33467B9B
1444D1C694C2B43BF2C6346E564FB4F1900B43A5D3DD6CDA91E6B8288C9CD7F7
5A425AA9F006AAA6246F2169A296E7CE51C2F2DDCDB9BB95FE002BCEB5BAB31D
790F34AA2E10A03B3D8C3E9523A7B0B89CE2732936D93A782C9902CFC482ECE0
D95F8DBE98D8881409E4DF06308F7E9A74A77DCF51CC69136FEC19EC3E1C8747
F334D11E5638AB58E144002BD701BD6D27C591B0053C5C4DFE995B4D59362059
DDE00174CABC6C7F57F07B46791685B5E64CC0A476F37F91994CC099AE649F1D
FF1F7A31E5A19DDD397F783D45E78BD7BC2B6420D180D0ADA160F151C3A58917
853086BE0C5A50FB1AC3499CA920187B9B5BA7DB830DC2F24A1D2169B121AD55
9C5633E5A507A651ED681205D32BACEA3AB674C11C02740791FC89C604882F7D
25B1B713B73BD6640259E386F7E3DCE11387F49654E5AD3E5185B668723E7AF9
28483436898F3A526909FAB62F12417EEA30E959A264000C2921DA1A6A458FF2
50325C985D017E034951FE4EE216C8888462F596D7BA1F574A0C2DD5E4814B0E
AE4E0B9905271B856B6E03584BBB2C3AE295880407B39D5D16D2D865FFBAC99B
475DB7A396CF088F787B3239C6E1D4F2ADB74B5839C35B07DC36B6507544E456
79B3F12D6EB68ACBB2122603A955408380860A79FEF5D80A41C5A335B8A54FA4
E25BAD7549D3DE53348114E267EB5F518FFEADC4DFCCEF4AB52817238F3D309C
040AE84DD6DCA276CE87888938DC9579EC297AC9DDE34BE10BC4D6E241AD98ED
D786D8466ECE71D8C2A504B8B0D258F528F30569D8089F2325C1382FB7537C3C
DE497F1DB818514DF143A7898480ACF8B7E336294E7A6FE4C3199158D2E24D02
CBDD3073F77ED2895801459541B3DFA6AFEC5004687271056BAE050FA4CE0353
E9083D5A505A4A138829EBD76C34F023D3D3E44095CBCA62120143959E6D1606
6BCF8C0A7C31C0B507ACE03D6E16ED0EE8562827290F6959E5E024A5A2CB159C
64CE303A18711AF1CA2375E2B6E39E82A5F38865D4E1F9E9F0ACCDCD2E40A122
0858DBDAC8A04F2D7F50324252BEEB434CB5946A980F99D267D37129C9EA708B
48E92BE4286FB7ECB45540B1358018ACFB95699BE736EEE56C9293613FEA5033
C7EFAB38DE0D9EB44121B0996440E9F7F492AB36A5C9E7B74B4923A76028B631
F4ECF3CB9A5655EA216AC4D9839A316B347517AF42E3A8EC04942B9823DE8014
C6E64D21A1BE72F3C17805E5E08BDF374B8A0D8922FAD0581E5AA027B3C03560
D2B5994C057A07014F17B6A26C813DF7209490804654C3BC3D1A4AC55D96FC2D
3ABAC305E281D50AE18699C5C71D536655FD1B15747A6FC8516F8D2A2DA0D418
34B1CD1D27939F81AD5B5322EFD65874E29FC85617B2EEF83DF44DEA38E8E087
789F52A373604FCBEFE436043BBBC1134F07FBC115FE12187ED2845D30B615AC
B140BED59BB3CDFA0D9280F760AF4F85198B35F2956B62726324A76DE8A1AC0B
8B1ED5F89F81121C9BE11B6EF62029D026AC79319471B0A3494B3F6FFA57CA94
4814D64DC369610A5A00F1E72B9BA1843FCF22B87E13F1E59DBC2E99BBAE3F00
F9AC05DD502A97FDCCC307985848AD929C833DE6374ED8F9FFB7150B6F89F0FB
1D5B592734F033145700F8179A207C1410177638203E4603AC3945F352442A56
75368A82824285E3FA2912372C696238CEA81355F7205259F814FE6F006CE9A8
F2933E401A0B0E44A50ECCAF368B5E6C4AFC2D2F76F3D16A0411946C989C3A19
B679DAB2D8D680985F8F9935BEDBE1AC295AF03201AC540E9A7CA10813FF602E
528FD8D9D5F2C7B2BC85917FAF441F29E0ADB22477D99BD7005456563E5E5FA5
346AE3EA1222614E9B247C69BDFFB99498ADBAD1FDEC809C66275D58533EF4DE
58A6155FE6268DB51F4700417EB710EC92322CC5283ED755096BC839A752E0BF
3FA360E6F1BBFE48E0D863219F2C6DBEDB8A80C75F2FFF678FF7F8BFDAA74923
3C0D6765E76BBE00B394093AAC729A71D82A02AA541EEAA51B9536E2844F879A
185F5887DD311C7BC05CFA586A9D06CB53213F1EA0BCEAA3C198615FEA402E5B
2D87CF03C6B11E6E8D73A5BA49B7592C9FED3007D21BB71CFFA846F66342ACA8
0DC3D5A7A6D32DC93C53B683BB65C830D83CBD6E93F7C475B702501047752314
F926F289911E556931BE3DE43333A4A5B3ED6A64A51886D037F7A4F0FA2D5786
2C68430D7E0DF83EF4CA4A639E0F221F1230B9DCF28D70445E99A855E17D07C6
671C20BB46418B1FE6E38A03D5CED0AE671BD043BC47D0EBC3B4BC3C7CD88AAE
80E6D015C66DA29836F89C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMR10
%!PS-AdobeFont-1.1: CMR10 1.00B
%%CreationDate: 1992 Feb 19 19:54:52
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.00B) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMR10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
end readonly def
/FontName /CMR10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 13 /fl put
dup 14 /ffi put
dup 34 /quotedblright put
dup 35 /numbersign put
dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asterisk put
dup 43 /plus put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 61 /equal put
dup 63 /question put
dup 64 /at put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 74 /J put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 89 /Y put
dup 91 /bracketleft put
dup 92 /quotedblleft put
dup 93 /bracketright put
dup 96 /quoteleft put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
dup 123 /endash put
dup 124 /emdash put
readonly def
/FontBBox{-251 -250 1009 969}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A
45A24ADAEC63F61C9FD18376D3984449A1F998C318A8FE36D0D5020E18A49625
0F3BB603BA1F3E66FF412F6A32433FF8BD2968D79CE4273AD0E0CDDA5153C2BF
F8A46A2244F9394A49D339F763F5A7411A3C29336B21CCB01723705AF589B078
3763035411FE36AB5D744E81379106890688CB5BC41184548B7FEBA08DE7288E
E6570FEA20C51FACE8E8F824BB61A4A038AB817C47B87391611B77928B2565A9
3B27A573C05D36ED01D8F27CB2C793370FA9B90021B5696280A55F2CB6117B64
293EAE0EA5A243F56FD007773CA35DF71B3D28643C25210CCE25F37A5095D6E5
9CAFD99DD1DB0D7EAD454C13464DF6FF5DD42339797AE5AE467084550FC00139
6EE818C6365007B2FD6E26285B832CFE6EA7E99665A224C9813C036CED262639
3FB39C1F05FF8F31D2DEF37BB9B883334F51EA124581B786A3D5FE6424B19872
AE7CB657C8D9528934B990B94FA4A6D61BC9D2CA9B4E95A22CBAA066043F44D1
AF32F545B9E123536914A7FD7FE96F12039EC25128C810BFF546AABC609DF57F
E19D511F324E32956177C4376D191C691B9F0B21FA84BAF3DCBBA536CD710A80
1DCD4C83C02E69A140E1A4CFFA3B012398F21DDD96ED8060DB98EE133F430022
41BA1DA473F1C99F0D6CDBD35188DAF712AC83E0EDE08EFC3CA2B4A21EE55692
CF22799274A5CFAE84C89C937AEECF9CC71A328015B63C1730FA68A18871E174
D035568A73346EBE4EBCAE410A4F2505370A0ECB487FB40FD823065AC56CE66A
9D8440C5B3F74B855EDAECE69835137D4D76FC0FEBA53998F57EEF25C7E3D9A9
21BFDBD66C84D8AF7D8A3B79FAA9DA2963FD47689E519FBB2B7793CE6DE04A5C
203539BF94A5A700E65B5A5DD37B051EA4348BDC4CA39909ABDF8C4102A58FD6
661206115F7EF6C29E12408BADB83AD40071F53B501C15601338467BED90B659
2708D01CD77E109ABA63C19FE12606511639C5D9D5522C80692D1CA874E17B9C
753AEEF13718DD36A008B2D39D618F4F766174423AE972CB619634766A5DA025
F9682D9E2A3C752D0F6F18B0D58319FCA606BD6DBC4F83D19DCAC84A6165B460
AC1A0057B12E2023F175E6A51FC12A4852043F6F2F2625ECFF6E866293531437
1C060C9383278C81B8DF68BEED88C49F86B7617C5B938457D19FA336C616D2AB
0A430B489EAE7998EAB74FC8C037550E12EF9AC540FD37473DB1A44B1747A4C7
4687624D806FAC32A53BD65A333DA3732ADA2774D6621BB59BDAECA5637F1F41
CD2AAEA8DB9774C2730DBDE3A2F9499C719A0E9D59FF37C4F4E6E54D5EC402C8
6599488AE21DD119CA2BF54EDB306B26351D0CC4C82040835580087C60327110
9F8A1277DDBBD25823AD30F0E960604BFF9CE454C5C841119F73535F3093FBD6
8E47B1357BA56E3D906EC70D68E85465479539187B56EC67A64DE38FC444950E
A82B014254689B676BD02A3068ED7ED5D4C9CA1839ACD730A1796A6FEE8905DC
73D95625C5F6B4364B1507A313B56BDB2A1DBEBD436AD80F31439C84BD00248C
F900452374CBDC6ECBC496178471EDA30464C1C4BF38936EC7E7767FF4637CD0
34D3C202285C0B3ACA5515977C253F00DEDD878F6AD84BA9A1041553A3626EE9
A5B4C881E77FF893293253F9507A3B8F955BF288562B67E2A99DF65D86D14B48
DC7587B628505B75A6DFA4CC8DB2CFCAC62ECA302FF5FCAB51FCE19FD7BB7675
D747A66872C49954B0C1547A8759E42FD7219E7D9C87F62451C47B13B46D9619
D0CBCBF138ED5CB03C8793626FBF6B4ADEEC391FC7AB65269CD899FAFEC8A9D9
DD838E4AC1249C33E3CD4539F09989D0407AD5A9A3C99BA7A24F62D428406A61
862D66DAA7EDCF0D8EE84B4399BB7FD1E117F90046F53CB268327B3333C0D82E
6BCBD0A6BBF76130D08527593DCADDF3B1D76A9154C5919562D5BA8767A899D4
DF546740D7EE9908EAFD91CE8F707A74696ED0DE86F6BE6C1E7DF1534E1A645F
D2315D77E06A87CF2093119D5CC415783F73F3561E7D336E3774570D50569DDB
F5DC496B875A91F2A2074DB8A7E44F86698BE3701727D63F644FF0DF38ED505E
ACB70239F0287885F27B6D1487A9CDF5817F92866613ACD932B6347F5857B242
95C3C47EE9AA298763F9BA372E0215161696CCA5C5EC4CA9088AF24D18AE43BA
1D0F9C25C23645D97AA5E9C05C59FD2E7B5CF123048FEF61080F6E16AB0D852A
0A0F0DC41D08B6DF137200563D61539C3B5DFB979889AC756B8A42A81D422DA1
9DB2215B060FDEDE2AD01D4AF60ECB81C94B66E1B8036B71CDDC8721E3D270FD
CD92252E2F73EB2CFA581A0AB5B196EEF05E926E3A8C45936FB43F7E726350B6
FF5C9D68CC477F4C4541E37210CC0DC917B9458699100283BBED7DE5634B08E1
E8A1275815A358B4C0D3787313C850999DF7330A5165A70BB5B5104415A5F973
3160B501075FC60DAF1C8C6DA3A674331DDE8854DE916DDD0491906F4EBB7F6A
C56C4A9D6132320E2E021CFEA843F7C56203E943D3A9B12D8321EAABAE3580BD
58D81B6C551BB86D2FB83A3E6B4924EE0D07E961E5235E7D473647322CC62C69
EB8DDEA11AAED833A80339E58330BD4AC7BC67B692ABA6A34D4D2D7A1A279A45
91974DF964E64592E3856B6D72B26D6E16241437159F3A09A5F30A4360083530
C76CD71780CC61C31DDE51A144E6E656F62A579D808F5FA729F1A66382EABA98
B6E376765D96FF4015BF46B3314B72C007A8DAE08A2E29F3461FA56B4BA6DBAF
6AC06F4C94FE3F2D692913E13F99B6AFABF801C0119625C51F8015E35BA453E5
8AD266F5BE4EA6E839C605AFCA7F11B673E51FF62A17D6BC824119A89599F87A
5C8D5AD461539AE6C846F785744E9F6B849635FF7C9AFB36F3725C485111C64B
DB1EA3A8D2AFC19433BDA2DDB2A915D8286E669A7B2BF56ECB12994EE78B4D02
E7DA102EDB56C598EB628D57B8ED10765F5568F7C2572C63F68A9F159204BFC5
89652150C585F950C9DABD8EF3923D2CD92C2A20F40133942E80251D52681ECB
2F8E4937F07F9AACF08094E5544C94133FA4944E1AAA36F4A30649817A43ABF5
7BCA67DA55F0D46F13389D22AF09B1D782F326EA1B184AE4CD3B1BB9A9367628
F3D39E62476B31B501AB4004F984DFFC09DB828BD6E8F9ECC635A7AB0D2E7E42
5F7D8A029C626232F01802518C62CBF71F494FEF2F39A4EF748F49B011EFC4E2
B2DCCC5574C571A252EEDDDE051488BD0E61D1AAC818299E66C8648ABFC5504F
12F8D212FE1AFB82F37157CC9E6F1724356968539920CE4826685D8EC818113C
50DB074D249558BA1533677C6E20991972A824BE32066E74D385B6A54B71C8DA
DBA4BAC19A63069021861140A760D46ABF184D3150307AA36EB75EA521EC35EB
4E8182C99BEA5689AAEC6F15131A9B0AB05FEE2CB8E1DB9F4AF1AD343F383B7B
51803858421E08BA39D36DCA7E007F58331A58611B944E337AE743B723DF037D
EA9F5721F96391E81AA9F4B73BA9CF11E89A8BD033C68ABE685D969A8CA3693C
5009D664706DC71DF592074529E3A2FEB9BBA37ADBEA43818D210F9719C52B53
E5F5109E5CA5A71A9124FC3CF7333E2BDA43DA26ED19115D1D3DC5F1B7FA6744
A6E1915EFD8DE47072C95D55D1BDC03169A50B8D83B7C3798DA586817812F17E
97BE7956C8A0B1D61D7CB5B1CD2726F131BB4CD67B5FC8DE43D5B263FD5E178A
7BC1F7AC1978C2AA024060ADDB5FCD3DEB183A592D67ADFAB86356F1EC9595D6
367EAB517B70ACEADC973F3976DE260453F62BD8A335553DA6EF056AA6BE668F
0DA8AAEA4EE11699740409CE5D7B3A2AC207F1C92B3E9E0FDF1894A1857B839C
C43E7604B70763AF2C6659AAA694155C6FDF19F6D589E09DAC6B64106C531E9A
A72BF45DA1323585E0F356F0EB4CFBB19C2079317E2A638EB9291D5B2E64641F
E63F23A24DE24D6B2FFFC1EA84ED1A6F857EAE4BD45590C95F1F9B35C6B05707
3AC0EEA8F326E96B08A58C7334F72C2B0C88D130BF77FC31FEBA96A8B2BBC258
A47F745E381F971932913B216EA725A2E2E11C8FEAB0C7A1FEF06E8B3BB0C874
C4601197272477288AB64A4F21AE7DCA3DA4F03691FD4A39DCF9FF2B0586A86C
2DA2856F3E6498001EF704D125469E4FF92527B38895E68A4F2055A40D99BAFA
BE0B9C3C26A51C1EF4E3C6491B44E6179C2D01E1B0ACFE31710B0409F3BB0EA0
A536CE49214DA875C20031252A4B0BD980973219EC9F2B5DA4D085421D0437C9
1D4F09FE88AE2F989D9986881B0E70CA21571D265009EB3CFDA5747950F983EF
298DBA2E8BA629470087F4CEC812F2F66F9EB47B761168FBA3C000A7412119FF
75B50907851B757BC55F4D1ABBAB103143FCA9A6BB98EC80BE2E779D6246D584
8208D3456E94CC3E476D11E169E00F94CAE760E829481028861A1F3269656F16
659E5799BBEF061E35CCF13DE238EA0840F95EA439F822D3BBC7417DA6706249
18CEBE297126300FF279BA514B989A98D6C0BF8CE599E00BA8FB56D26B86D154
E035718DBD48CCF219D7B3AAD324149CE91F67E788A90639D468E203440DF652
1730DC20D2BAD1E63FDFDC4C5D9AD8E216FBC13E481579AC3F2A575486C1787C
BCE8DB82F6038D3C338B6B60A826E7AB1F138C6E9C7DC78ED579CC310304A6AA
FEB647F6DD473C0356C7D6C4DBDF04DA04F2E028089C53176B073C49477FC78B
8DE568C146DB5A4BB719251D4DCEB6447BB14F2AB145AAF6A02A54D2F2C88D75
A207F7E1AC092422F873D78D3FFA6E6032C224208E21A5E90641FA8EC8906607
3B6840B69CD68A73FFED035F2F6B60097AF79F5980BF02FA4C4A4AE43BD9293C
5C8EDBDDB55700C78EBE01065F64F7DA1107CE59787DBBFE920AC52568FFAD1B
E2DF54F7E947E22C87EF49BB72F2327817DAA40B387A544AE64B62D66A9F9CFA
6AE4655896C3A501BFA33DD0D13F957E66EF6ACBFC64AADA82DC9A0181F8C14E
F0A72C812C661107EF7E63DCB1B7DAA064954E97303DE2FF1641DBADBEE7866B
7A9994F0FFB8E57F407A11AA346325F947A3D3B0243CF2E651876C40C605D3D3
6BEC7575B0881D2E941E49775D7301821DA79FA4901280462D535F0686CDD70F
813095A02023E46F9884241B1A8014183AB8F56C8A38FA46B5DD25301F00C290
469032E8A72BE4D1279A0F9AF19BB3391AE67705549FDADF1F4762CD2F08F0E5
7AD580606A628F70DA626AF1CB44CDA85FD773DE835A6967A5384B0168454F0C
871AA8EF7B653DD50F6BA25578C1934A7F763FF25C55216467A9ACEB0912F607
5AA9A87857D51D14D99B77AD61F3F9C89546B5C6FFD8484FF70B1626BC225EDC
76CAEE711EB359299F0E6BDDA86FF99717DCDACAB9F820660A05A405381DC68A
6D21884C16D25E9F2B1CB1BE402C32A834E6DC4FFC30E83752118BC1F962EE2B
45733D2474E7EB130C5336FEEA4A014979153BBC7DA5931FF017AD11967A0B57
09250962F4E1C1EA4663C6FBC9F88840B746585A54C1A1028B4B79ECAFB4FCFA
DB6CA7F286500FDED4E3353BAA5DC9317902E65CD7CD5884C01084ACFAE55A4B
F62F2946B44EF0756EAB8AFC9317FAE575E48E703481CEF1F54D9FE18E740D25
2A11CD2BC857D4DFAD9C9D7D41133770C266B23D1063D82489CD767858CD0248
29EE98356ED6291214DA42170A2BF61494C7781D45988A70D247B7BCD6B84323
6A8580912B9FFC49EA81AA30EE9F702035BC0CAADB2FA1C56286F15DCB9BB165
5E53C402138F31520AB028B4F219E1442B22149086F7A415CF9DE81BB11BD79B
11C645ADBBB9EA4ECB26AB1619F2E246B467DD7F1FE70653D2C80CF271743B34
E385C11E9C9F18CA3E0584F0760BA66EB7D28E9162930AE1DE1347E5A667C456
781E4D77ECFCD3BAF48499632DF5ED757B6FBA5906FF6C0E29677D0932C8A8ED
0F1CD4D4ADB65309F8CAD5ECE1BE78406A2FF2D37C82114AEEE3CC384DC8A7DE
0B66AD1AF3CE9EE796C0173EC7BADDD2C1B3BF2B9E030378952F60E4FBE9A4C6
A223287C0445BC338423949D22CD37D1646D25CEEA1D8C8EBEC76457E7064561
217BE002F4E4DB861493393663C8CB8969DD304604486E199CF20112567AE7E5
7353325B7A4942143C5C2DC99D34EC0AEC72B916E00E56AD5A1699C962F2914B
09C8362FB0095CD759143923C888806968800F8F79F375BA027C5C05B392AFC0
636A889015C809E733828CF306B8375C21F7741043EB830FC6E0AC6032C4FC72
7C27EEE48BABAF452C26DE64F9F9FF27C75CB3940CD55072ED5202E9E3AC3687
90AEBD7DDE8D945D57DF79F577FF568F0F5E3AAF4524A3CF7EF6FB33F67A17E3
3169E75CF79E382A24B8AAE65E9D65323D5AFE0EE5FBFBFCFB925350241C4500
ED09AA9213EA68A3A369899C5FF5B09EFA0FF028AE8AC1437A9446CC6A0DFD2E
4E3FDEAA36DEFA49CF57E33D0B38874AA9E0B045DE1EFCCE54AD5DC27176F4EE
FB7B774E67C628F217C667B17E1E6E01861EE9E74CE563BCDBBB5F1069A6E8BB
9EEDCC9487BA657E96683D0D29F40C303C886FB80C95AB5E253C88F5FD47A406
D51FFC0E92B51528280EB95E10ADC461C2891B603B317BFA6A47114A7A5A0B64
175D99607F27FC5B992D55EE1709D0A51C3EB8E4D9975363851A90E94472FB23
CC14B1B8A3A06A2E5D3094F83C56AA7B9ACE9F56C8C916875E953D9CF1BDAED6
3D121F5D09602928E59D7168938AD8BE7117B9CBDAB69A82A0758642BA4BA5A2
B616864919AD60F22252CD696FC87D9584B1EB1EB5FD8E8943C4D95D66EDF578
62CD75E032CD7FE6E6DEFD146F327C482B820F9FFC384C710107D13108B09077
6A93A368FE06BA620840D5746A68A7AB5A51433F9C3BD5FCBC71258A1C8DC6EC
220E80E6DC9AEF93F421AAF4E347D511CF4D1352F421EC6A5B6B7FDF4F835490
F15B775034114CA844124A78F9B3F8865C5F6A4996D83032040EDD5D00C6855F
553E43816E73311618BAD5278FD53E2F0D412151DB0810381397656D657FF292
F89B4BA106DB5692AEB6100A3109B8B5AFED6E3618D676CC9874146B7FB6C261
D1A29D3082FE81FD3CD075506767E9B303CEDF4098EDC303E6D31FDB6CDF1425
E6AAF55780B8EAAE2012094CFF5F55336EE655BF12CC70E25B6A66D8319DB6BA
D978B0573A0079A7241E7D6E840B98C1AC61C9495522ADCC4E89FC252FF5DE54
650980BD5F889807ABDCA600A90155162F5AEE9856E169790FBA99E73DA3BE65
DFBDD62CB8678520EDE2FA98E6087242F98CC150266F6E78E644FACDFF936E56
7CC9E08DF6806479F107EE46D5C3C382946BE1BAACCA25429F4EA46784BEB5D1
906F1781914BC1B02A1F7F4DC8B8741AC9915AB30539E99EEE137F24CDD5E5F0
C9A5D68DA88BCBBBC15E10D4F72F6BD6702CCD889D1EE21D40BD3FFBAE6A5A04
FF26078ED748091DE2653D9A6E6722CADB1E30530F56D1AFE548F5D19742C397
F3ED533B08BC5C5B751A052181CC4F7B831255A4511224240925815E54CCF9FE
CBFC0DCCBF923AA8D386501C21FD0348CD579494769F338681FFDCA8A3EB2843
670FF1214727D070A63B27846CC847FAACF911D51A64E62A4B749FDEE36F2951
026647C4B07DE22DA837C02FA4F5BE4CB0FB865F601D4ED0D7A47EB89E0F406F
CF2A96D1ABD956A83FC9A55BB0080671FE306EE43C5531FCC254C6A28BB99F1C
9EFB6C334BCC4D1A63771115AF2D18D1FB25082F71287AF650EF4D34058FF290
AC564557F4C7B8A6D50C62F6399131A6985B8289391C5EC6293B59E7F0190BF4
9D8C75418B913985DB53E0FC84C3BAB102C1E95530367269B9A3DA4598F34D03
371576CC02DB084B2CA8BB74F7318F1C52AA68655B9034E0E028D5F816CC961A
628857A2C02E040612837DDA951AAF652F3791D3E169BB9A4C1659907FD10694
FA55B20BAFF4BE480C97A70D0BE02B33FAEA9D344D94C6F73C14E91F77CAA029
6544B29A42F0DB25EDA7E9E021E830F7C7D12EADE9F7C890FD3078F4AA4BD588
1E70D2CDA5426F2A371E05893D2C7839992800C6E36B99A1D39744D0871393EC
4CC851C8A03DACBE7E4309D2F983F57BD103CBB4B3CA52B04C33105FB6AC8F70
2D4A8DFD7440E6A98486859A149D8496E0BF32E9E930E2B0FD8E58BA9B18E986
359A133907128E877754199EE3B55A9FA8F46A7E4C62DF1F251FE2AF72197CE0
59193D01B62D5D4CB82C83A447C18BF1943221883A2C08E790C01DBE70DE2B64
2C8FDF7D69A71FD9CA87FDDCAF8F5374CA2CA6CD429702E9F67EE5FCB0B264BA
2E5D5A93540E2B26B511FAFFDA02B77D550B66FFDE5737307B72154C4B1AEE06
7F8056CC8C3C10ED6276ECA0EEB6F5E33962E617C661AD86265912BC3765AEEE
CDECBEA1010470489EB38B4E27EB7A47CEA15FF730957B070D359F2AD49D1BED
5290F70734210D1881651D88CA905458C0464D854A65A254F37B2ED24F9C81EF
88FE8A2272B94562B58AC3F6F5D05C557A5F33CF3425E044662CAC603C8A65CC
1AE5399D1977295FAC2C59EAE534CC813868AF7D96F8A992CFA93ABDE3FDF652
18C3B4C817F30382056D43B6C6FBD7B12255B184CA99CAA0EFC48FB2EEF60F67
418417A17FCD62D3E64B93E410796F4F9F4BDCA7E183AD7162B4BE1EE99F1AB4
B8BAB99FDA5A1E6FD53BD6BC6924905F1A473164AAF0CBEAD6F1962E6B99674C
8232092ABC2A260E38F2A86A131933F6C89FE2041C4C5E8B79A65FFCFDA65A45
636E255C1CE0B5A3BDA7590CFAAB3FCF6E0828CABA3D86ED91934E53CFB1F902
9C6189384CA11912B8E6C6F239EE5600A16E648E0DCB07F16E87B8B3E4C91B21
F4F815EE7A42D90BCA42CEB8F8D1D01927AD45A0633022719A6A93A38EF148DE
FCFFA521D80D1580C9F32BD381CDE2D736EB78D9562D653CB4C27352028E92F3
774FB39A20F2A410472D5EA2113709533CF8CB3BAD761AEA1C23BE573D7380FC
15D16901AAC258B5B9D1B90D3BC22DBDF37CDA3C763366D3512B16BEC78F222A
32D3527D774B95A6A160A22C874C6F03548E88413583E257F176393002731370
F50EE65F0B983C7F837891C6B6EF7282C7700FC11078E383BE1C1C0EC32D4E61
7D8720604257D4E4C7257F353FA57B9DB7B94B0C0A4724A16795D742E6FD2C7C
EB27F6775292B011C5B308FE1C90BA1E2E1A3FBA153BFAAA2298BCA88FA71DA1
5860FBC840CADC92574CA20640B3A70C61D7E61CA9D15615E768FD4ED59211CF
E191A91F249853267A117EC481C1787AAA1A47B482B7146873ED09B2BA348785
FC74628D8B01E86F0D3583CC3069CEFE2C1C3E04B55D934AC5FD11992C47D035
EDEB7470CB6D2C4674B673E090AFD648EC896CBE7C6EE414E87A600EF35C6B43
A2F39E2D311E99B2B005B242E2AD589C61D542C5AB63BF5893885DA3717B7466
FAED4F86329CC80644CE453CBF519577DEA06FA3A6C6EAD45127FFECDCCFAD25
2C870ABB52AA319CB0F66719AFD772A5A73936AEC15174934C5935B8F9D75E07
FF6CAE879A494C449CA01A67692B33E70DE421D86759BB4F56B2EC832AB99A61
86382DC3737265D4F202CD5B2C2D9D906A925526774488B8FA5F603F7E52129F
EF35DD47192CC9974BE32E0DC0A24908D13A43BC19AF60B6D7835B21D9732E26
27BDE60409C5326189F8E48C0A84255AD2A61485F5E2F02EE0BA7638457515A9
F1CD4FE4F0A12491E74BE518FFA0AF7E083F9BE804A89AA0E506680B3430DE8B
3A6DE8ED3AFE5AC0A07F3FCFA67AD268E51C7C75A3CF1A0635F5C318317696B2
C0A565309C4CCF57D68F9816E6C2F6B208AA03D3472E54FA4686E02FA4B05724
FD37E7ACE280A0A06256505D0878B202BDD7B2E710CD845C95F972F1F0695F67
4796ED11A13D398E286D4DB3E93D88236F14F55715ACB8F4CDF390E92E59770E
6AF864749051286F33A3D0F576E227CC33238A76310F15A9DD2B5B85CD3B0FC7
644CC2F4500EB62A09D11FC133B5CC1BCC177E8CFBB81CB76286AA5FB09E2B07
3E06323A2C709B51287D7BDF91DB70B66C456792B19874CD5E78BF712FDAA97F
22EE1B410440B153180CAE7F7921043FE76BA2E5AF9CFB6D0C0F30E81AEC9C32
5F81694037F4664F1E3C338005EF2FBD1972A159A7AE181F1D6D8AD88A521466
52C559D7997C9BE5DBE8ADDEFFAE1FE09B059E38C1C3F12C3E9FBAACAD15A2A4
32B9808ACBB14CC49226703BD89F98B38B77EF20B1CC960ED820764765F9CDF8
61B82A0715EB1BA581C6EA5C91B4E2C9A13DA4AB1A5F0BB9A18FDE6571F73365
E16FBA8165607315C4C86933F609AA4A0705D5A7913C673A8EE53C07FFF24DB1
38D2CDBB0BA3C13BEB5731669DDE57E984F9688A51D792487CD6D7C567F7D3B2
A7B88D97CA56D335724EA17E17947A87551B8590F50875CDA13B1038B49B9BDB
B084973966507CFA7E3155282DD8DA336B32E21FFA8536393D05E6B8C7283770
4095D05DC16910CAA4004DBCC1F083272AD9B8385B215A999BF5CC0EF5E9169E
0754F47674499EE53029FF1ACC64228DC73407734760F032B3668222673B6F8A
115B9B7F74E45B066C7763922F6EBA86ED28E56731555CE7E4C5C82C00C7B934
E9605B4163BFAFBAE5A7CFF26A120568BF8754F43E78DCD906416645A7DB82B5
4E0C0DE674A1A630397B788EBFDE188954047CA88A754B6CD7048014B270923F
F26B64CDC2D4A0F1201E340336337075DB09E21DC46992C8FCA868F1E18271A7
718F987FB3841184991B08C4DAC5AB2837E58B1DF8DD411D0814B6037CE25F10
2286169E5FE0B0994B0E5FDFBEBB2E52BE935D1EA5E8A152182BC15AC01F205A
19E2B878C2D151003C58307DF1F5E5BD8105D1A221096E0852EA15AC3775A269
1EA7E75C0198F88B010FC1C43FFD068BF88B5B726CC46404C07850BC97081A13
6668BEE3D33A90AFFEF3CD6954F8E6ED870C182668269B2EA0508FCD1FB930C1
A992A7468BA868CBD82AB1C29F9CA9A5E81BB2AF415831C52F2E7DA582289A53
99ED3D3729013511C92CE6977610D183CDCC48C91448DFE2F0520636F26F834A
775017BC52534D4AF90D9A71F64F7D709375E286E8A17379478785F37D8D725A
F599995F820B15B453220573E8B9776E4B31DF450EDFB83A09A2B618901C2B88
722A9FE1F51F4A656A152BE5C2C4A2CC5577FB0281E2C374BCA01A14CEA5CBDD
007579A0934E05BE07E9736FEAE12D6C38AEB2B86FD1D646040FB9D89FD4DFFE
288F0780C151240463E79926C3C7D039CAC9F683916944234FF1DF228B4ECC0D
D473A2217532FEA27797E14BEE0FDDB1538C619063B3C5E9E1365409F0F31585
F4B87C8CF91AB48C96165EE6E24A64ED874CD1582497C7E33D27C8F7DE66BD28
AE8D9A02DCA00DD20C1F1E0656A2BB6AF2076E95528C6D9200899598C9570B1E
C522BCCB7E3F28EED667D5A9DA03D91A088C9D215D018694C976E71DFB4947D4
6826D0B25DCD1B2A32A3EE6EA76092474F6F11BD3AA59C42E81B6FC8BFA6173E
8B031E3A442C4710A516F2D1DF7821B2E09186D0BF3E8BA2E19AE70BAF0EF675
68AE6A37910C2204C63019390D2078B5935BC2D78AD48C3E6F73980FE9518226
44645E4E88D0A2EB34298B067535B4D02976D754C22021A544C7FFD3AEC89C68
C25AC2B0BD9AB96171AC7E639DBC8921F5D0BE395EE4BB5FFDF39CB315381478
773571D5CB7A0BEE4F8A1DB39FF54AABCE517B62A3C7E90FFDDFBE95D3A80FD7
E4564DFC17BAD13BC19118E464178E3296674C32EA124F209C904F5154458E61
C3F9238361167E29AC39D02FAEA195BB0357C0834534A0EAD9BE92B0E333A824
F8B63DB8D68690FA1C92E9EA858EC26290EBA50F7B24F321D9807AACBD6030CF
27602F031D3DD5791DE6C1454D6C25238C4A3D9673788E0AE2CA32B4FD05FC5E
103D0D3DD8FFBFDDF627FD15FAF9A9EA75950A0807780689FF9F75EF48BB65BD
CA1500F816F21A334DFD6F14A256FE750AC403C566D89244DE90EC79E4539D91
87663E11FFD1E51DE30423F7FEB30488C315E49EDCC769FF94C4F128F885463B
D79D284046B8479BFB5CF3CB9B3F2BEACE901C048E98393957739F0258167354
72166942793B553B99D38BFC2B897C2C2CA6EEDBF75CA9E51E3D21B5C9A6AE6F
961F349FC6ED6CAAB75041F98BBD583B4B503913C286AD8D03AE740A5C6805DD
E7530BCF51B206643A65E754918B7D82B3147C946B2E90BEB899A55BC690395E
E14BDB3F91CF3B73BFD9E68FE110573E2CF40B6C37D92C7D39C2F2DAC0633EA9
C2073F73420CECCBA257603F7DA7091CAF503962CAF19EC6D3BC3B0C214A8EBD
493FDD997D8F42A1A95D2E8FB8C4F9ACAB515D5C63D69C339283C8DE16FCDBC4
79BB961C4B82428FB8AE6F916F6E99669AB42465904C3BF5D935E719C9FD4BB8
CB6E2F4D84039BFF3C1A15863BC251F6DDF45E73A4C3185CB49C6D98A8C1C1B1
58B465AFCDD3F547230A0FAE87D67E15472B98D11BC372550AC1C85C56B8A29C
D40A2B7DC2B4F75BE8DFAC906EE468A8EEE43AA663A8BD3E256860D6D9C74078
E9986A6198257AEE9C93983A25316D8FB8BA96C5A34C64582CE5017B8AB0B46D
B6FDC46D2FAC680F7E59840D756268CFC0F431A9116A328D1E344B11FEE7EC10
98FF855F53DBADF69F9DCD4FAAD695D12A748AB3857C812438F565BB66AF127F
3ECA12EF371F4E59ADB381DD14296C0D903AE3C428DBFAB3CDCFC24381C8CC17
174F189F4F5D1DB0EA69BC56BF9D916B710243C26BF441F61478E915F074F7F1
6D5E11B28D9A6BF50733694AC30BB1604A6D57C91415C4CF0FE4D76AF1F46302
715A6A4D2EFFD69C8C3AEC07F565822F8CA4CED7B9B5DCDA8B47C3C32863A9F3
C70F17F2C0997D6D646663A8D9A2049619641631D542CFC3FC8B92DF1B923134
656D92846F6D72853A12506C9F904A9690EE6EE2AC2BC2879B879D4491CDA26A
4F4C8F444E2E4876E3D251E34525029E7AE0D5E08DF55A91400918D8354E789F
F3BDDA421C5C063B018E03440B4B3D65B2F7DAC6EC7C93A1BC883212B7CACF91
E1C94AAEAC4F258D59CC1B9F6D60691DFBEC6A663CC7D6AD66BEFF12D343A57F
32A8B3479574573CB09F50E5200E1989002AC7E31C93978ADEA29E7821CE498E
7BD9646A7FA6308F0D184882F00DE22816C08333D7921A427285298F61A356D9
6AA21E1502B6DBF68D03DFE1C13548BB0CEF41E2885C53CA39C7DEF763C0969F
459456F1AE364B10645EE496C9DEB404DF7CEA651156FD316A302172D145246A
84964C537BDC57571D7EAF1A607CC623F43A52629725BA866845F943F27B534C
7E68400B49C315D9DFDDC7FA95F1A74228E603DD95B0797668EB0F0DA07587A6
7045380E29AA43AE3DF6E867130D2699FE42E4F46B528F8FD5C3640E3F30FC2D
8B3F48E9394D39EFFD635ACC5CD358768603EB3173A1391B857063ACE6917F4C
C5DD7A17008E97A566466BB4419BE0905E525D712D38E355CE50E0F07ACD6AFD
5BE5CDF453DE9A5AFB32C3FDFB7EE65E51477192B3A9D5C0F146E6DA72BF9848
D2DD337D9661B3F975D01827FD23744C92DF3AE732B01E377BF3BC64FFFE4398
34BF462D385123A5B25D2D575C24BD36049312AFCDA02BCB4DCD3C44F7E1DBB4
3140A210E1F5E164E780914E6B481CAFD2F96351EFF4A6EE1FF65DBF7462C35D
0F19DDF8F325E56C4CC9136ADB18D5ACA485755A6B6666C366C2EEBC8D8536DC
3C59DB8B9B0DBC6157209304392535A0C73099E6E791D22FE076DB418F454E3D
4842F1E30713DBCD5B0808C7361CBC4D6DAE5B6CE0B255668AC94FE00D8B3E20
F8EF11F0DA92F1EF1D7C162CCF8B582DC433F08C625DB76573F3999F319C0F82
D22079FA9C32AB8B0C562AB681CFC2A46F973321994E774F0BBCBEC218D771D3
E2928A8580C390E9D001DFE42AC8F9D7E6981842BF9AAAA0683D9DE9292A6FCE
78A38802FA6065F14EFCE4A3DB9D16FDFA6A18A1616D0002821F2043E73F114E
3B186CF70533DAE8DF4842DD9EE6A1ECB3D848571583E8DA75A6DFF50D28B3BA
92E0CA7C24AB97F2A4B55779859CF2272E6A30D7AB570EF41C99723FCA6E9858
617E90809A16228E0CA06E62C74A7CDBFEE852BCB7C1AF7C4411B2E68543708C
7F1E251D982529C0BC38DAE1679CC2F8ED62C0F3A74AA7220D979C129D27D7DC
B39CE1A5A941196F9655036C3F02E67C47A3EE88DDB772C655B4BA5FDD84C75B
0706141062025C62C1B1FA26EF1C1164DBAF7361DA0BA519BC9E93D5694C5938
871D91BE3B38B3F56C01E6ACD01F84AFF34EC9A7AA7EC1A3B7EBE3833A87D353
FC3FA314004A7D3DC248BA702E17DB3F29C005E64F5D83DA9AA5EE2A83E4BD82
AD3C86252AA986E02F9A51B76F383DD0DEAC502565E8BB819CE390AC1C82C036
E3D53CADDFBC81C15D0368EB0BD844C26B9E1DBF65FFAE6F23BA358A482E2CFE
FF6D99F47B0545F872ECACE7396E153DA8C46D003C93AE81D550989561489A97
14F196AA64A385CCE031835094A04C07223C175EA85DE7AFCE1BFEB834C9B0C6
9A6AEFDCEBBB8DA0F2A8ACB9D648A9FFD94F5D488171FDC0A5CE375D15240CBE
2D189C8093FC31B3F6674D23809B8BF67D628F23B28C766C46C1A7326826166B
F64E69D5DEBCFBA04CB9E0928A6299942045CBF54C9709CAABC99DE7FA7D4577
282438AAD2FD8DBBD66C765A6ACFF529E3D40A88D1C11EA540FC59D060F804F1
59EF4326B68C28DD41BFFACD8635F14DEBE01891C223E3FF5059D14AD426D7FE
CBE9F163EF9F97AA4AD204DF444823F2151ACBA7BBE0A0B0EC2002B07D7CFE89
35E6A3870BAAA2C769F3F91E2FB811F0CDAC884A4E334BF254EE34C9D040DCDF
B083655EFEB411593ABF9CD3A2299982B7196D8CAD4D2799E431E849F1FB14DF
DCA850F2448B93FA11F30EE2F08590EF19647DD5CEF325618F2DBD1079F387DE
8A17F0F107F50C802C87D939D9FA730645C60769099FBAB780777FFF2B9862A7
BBC688F35911D6CD61CAF29562E3C5C5E7015CEC4E4A3537E7276CF4C086EDB9
7A1B4737E41CC26C6FB6A8B4E50136CEB64A66A3ADA4CDA69159E0F8D7358735
98A2368BAE2F500DC02B221E6A34C16C9989350BED91DA994CFFAF052230D7BC
433DCA693B209C10ADC21CF0C40AC756A101E2AD10637426BF3991805F93AB5D
49CE66DE3D9DBD2F4A439A9929643BFE8448F9826192D68A8E33E730B618361F
FFB681EDD074264EFE1C5F1085B3F4F46E2397357E43C28707909F86384E90FA
6D37EE874FBD84018763DDE14B6594A993EC46B00133A7CFD402598B8FDE2886
533ACB7CD4766D78799EFEEB2E3F4B4EB02AB1B79E6079CD62BCD0CAA0544A51
52E43C6B03CCED72B66D746E6657F3BA927BBAFF8F0A8E660DCF295F51A4DFBA
F2C4302A9CD00CB73263F98E29CD5D26CF5A7B390A93B2E5BB40FD247517755E
811D760C80FE0C167751CA1DB16A33D9849B5EC0D9E3F684D4A4D30985CF75E9
A6C4950FC1B61488CC8E8BAD5055A4AAD2E715411F7BEB4CD1A33F4A654380DE
8205007033D0E60139C72807D4C645C7E5157A8FE4DA8AB0370F105EC8B00CAD
740BC93D3B04BBC6FD544E059C277A4ED6688B54D5B20A18F95AC69D757CA112
138606FBC0577C5C5C9491D69073E9E761341C17D8710E1D07BD74B1ED6BE0F9
908151F677EED6C7EAECCE6AE3A2DD2DC1015F11F5B7A3E1A2ADDB1C5A201B59
6C49F3C6EEEAB2EC05C00C99F03A6760F134DAA848332935A5F28B390A7B8CE3
971B2FC06D849E6F384481B470151A51EE32DDEB90F47D677CA15EA9BE8C986F
69C35027E0498E57860F410D94BEBA69426ED6B3F1CAAF52D146407E995465B7
BDB1F07DE92B18E3A1BE504485B4BA6DF123704EA01D0FFBDC8A0E36BAE32455
CC8C68E0C3E69AF322344DECCFE19D14FC91A7C502D07941CF6BFB1D229C06FB
8D7B7533EE38D82C7E04BECBBF455E282F90A54D743B8E66EED3D5CF51A4E7BA
9DE1BD9182751A88BD23A3897837F28C75669AAF40C7E903510FA1A3526B2EF9
4F0E09595EB42C988E6234A7C09D538EFF1DDA991921667AD6C961BCA250B844
2A9A4C0BB48327EB1672344E323A745469643E38A0B8288EC2FE985A5640F103
7A1C4B078BBFD88BB2896D1E7705256FB78C55028D8B7840883A3489BBC2468F
2B061B45EF1D44CAB406AB9CABA47C316FD8F0755BDEAA2560C7CB6F842159B3
B234455E489A2E65DBB7CF504BCE42331E0030B5B93C88241D2223CDA9F58846
F7F00F3FA219495189C8426FEC2B3C46DE58C84E4A175F4FB7DC489D6EFDE7CE
7D131E05D19391F5B00C5AEEF900DC97FE0CDF9A93C5AD7924F9CAE03E361654
D3004BD9C25BF9E5FFDE1C73311F0280992A45674B396AF858A4F0AE59501097
837CD00C7FE24FDA956BB354B53889C53D525A8F6E8B72AB408D8A30395617EF
23B93A960BFE0663D25DD41FF84E182EAB221ABBA6296B6F5F83A418A1CE02A5
2D13072F6ED63B92B9ABF64F6299ADE62200682C5CCD473D2A292696091B7459
2A5065E9606E160C0CCEB99F93EF2313E18D9B0D68BF6C95FF3122605445BF2D
24D10B74EA7DE1B5F76F70B6AB4BD1E050A96484EF123D6BCD62C1238A29A68C
B0EA877CBB55D14CC106F4C022C13501662363CCEAC7D83C5A65291E4412F608
6DA65D71BF07761C2E9C44F6D8D5F83EEDAB101D7B412D4CE3155B6651B84973
D635356D6D4DC404CFF08CF3F7357FE442C85320089B9C0FB8D5AF748F973B2F
6BD79441CB8BA9D35EBDB2B99A9B2276DD99DFD24D7C184E55C3180335A9E22D
55036B20BC61D07AF2EE6B25E57BE4C8A5139768DE8E8103E5C33DEB31B97251
90834A179EDD6A5B8952FEAFD1CE6FDE574FB2E00D2DCD2C4EB7E76D5582503F
C0480C28ED46A45A4E7D6C3905EA8F257E39CF28B5DF520BE498A5E359A2D447
F6E39F856A5B6D19C251E8F9205ECD682575A172B85B390B6AC4AD8907F38F67
F70F6C3483EF9F14139E02593463AE48FA1BECD864D4535FA3BA14E3D22358A4
BD58BAC3E01B450FE135AAB5A36AD468ABBFBF5DE561AE2751E4BA73A61F7C0E
C24C0171C0AECC138E933AA6E058A77F5822C43731DB4EB8BB1F1E56D7918054
B8C89E9F57D55FEE8B39B3801D5ECA56E387429E22A1FDBF2384687637F484F2
3711FB8F6FB3B5797A62B9320450F78991B017B66D902D2E0C6E9DA6C8C63A3C
CDD307038AB28F58E848E8437EB4FF8757A7E37407C31B54A9514F680566FC12
DD5203B79854081804D99DE7556FAB40DA5E78CFB9C10948C61E0FD1778E2A00
AAA20756024322C80B68A733EA8160E548200F4742D3FCFE3B05C2D1175733E5
61CEFFC8D8A348B51814170ECF63DE51E7863C6097A4A5CE20D7E12EA2B97A10
4E13B6A9DD4215143E75F36D2DC9C845D688CCC6167C5AE4396855ECA33189DE
FA10B79D57256F3868382787EFD4C831BFCE6E8699678D11312296F1ED679813
8D10EEB4B078AA6444E670E743E67E948F2249890C9B290ACA00C5564166BBA9
94EF6F1CE0DD02B3CDA238C13D05BB95132129C08B4998DBAEB5DBEF348388BB
25A8D0236620CD991C5DB47CA158BC4F36D873FB6663DE7528B18A6138D8F917
B695AF7393AB0DA8BFB9279082CC6000C091357F1DCE107B576AAF6F62D91E8B
2851BE58677742C2B6D30648BBAA2A3C0B357981BCA8402EAFA2E90F2A1CEDAC
E1F6C1C148CA335D639DCB46B9EB3403F7DA0B0907E4204AC06BD74EC984AADF
8D3D0DF0F84AFB82A9187A32685458295EF356B939D721F5A967ABB4409B9724
9CED4AFC990AD88DB3C0BDFC3E9E08ECC54D7A28CB18E6299BE4E0EF274D4189
C51E874C121B91232ACC2153EADD544C6142F5F76E54ADCD638AAE3BC0965559
6A72DF7E65BDDDC917F22D1977DA69E279A1675A607D5F26FDDE383B8DF4720C
6D1A450A960A70D4EB2A514E34EBEB262B416808EEB71831A25261E1B4E6980B
0ABC6B3D116AE48B1BD1931055D9E49D4CDEA4B8ACF709057F4E8712644AF616
7C765ECA803CCAC59FF1FEBC5FE529E06343C2D9123D9686D3D9C29B1B4E5FCD
C5EFF3EB8538A0E0799F21FC2940DF0C60157CE05DF0AEA7D69D4976926A7C46
F06ADFD19BFFD1D21D3641E575B77C0ABFDED584E848CBCDEE7F5B3FC01FC51F
ED7632BA7419A5A9F22DF0115B5B584D224D25A70C1CFE0FB0214BB63B38DA8E
72AE17DF03AE3038DC2EFF30C7A4989DCAEDD14838FD1E54B22A0204A2BF2EC0
F38ECF75B89B690173F198BE399F946AC823CC845868F8DC59B9AD1F038D763F
E9090A5F42390474643DE7E17F9B204BC7BBF383E8F8C25B3355A148AE828EEF
5A91DBFC8F0918E1BB65AB33DD80017F18A44DFD9C5178D904BE2D0AA0F706BC
319EAE01DE9721E4E588C97E89ED1DDA9237E4EEB00186DDF78D4FDD4BC1CF1B
3AA59DFCE7A736514B5488FFE47A0ED2D6C70AA8996E1F6BEAEBF38D5BEAAA49
F3942EA7123DF795D68B7176CEA880CC9AA1704B1FF4674F004878AAB7311352
E42E35C91C3D5C3846E16826F90C80BD438F31C05D510B4D7789AA6B510354F2
21FB4537370523F99E0323BA7C04BA7B90BC2ADB728513A19497901E01411AA9
79858ABE6CC7ED285766EC611531DD719F20196C1630D014AC709B585E0591FF
8D12ED5BF97B6CF857ED612B6801D895204FD02BCA5B83C69231A81B77405CDC
1E82C5BDDE6BE25173871E33D0C759B39648A16D929A908973D8B4014E52DD3C
B9ED1DCFFB72EECC46D4C45EEE58F98382FC4C090F6DD29FE2021F05E8438B17
EAB2AE9FAEDE709226B416F01A381C9AC792A6EB4BB98E1354E5655414ABC5DD
130EBD9AB54CF12773831FF2A93D1A5BA6F63C815F4EDD8808C454E520BB0B02
9E76CE840132FEA3CC5ADEC12162D4808D138944423A0D84C067F73743F814A0
0DC1A1BC2C07927CE93EF1B502E12EB739B4F93DCD4E33E1C6CFCE1659554E9C
1E6BC7645EAED352B5BAFDD154BCC594429924B1EAE1BA1540A1B1365BF81AA8
77C053109718B748865FBB25C6091138FB046D5F58585427525E08D5CCF0D139
0E3C283E97E1486E939E6C43566D882F322673B94EE8941210A2A8C843C30ED5
9E045E027E2EA26CC9F881C7074AE623DA81E3D31026BFC90E5DAAF9511CC768
F82D63940DBCD868C6CF655A484570C1F405EC4E0A7EBA47A54D9230325FFA1F
444D74969AEAD238E936F17F7A18AFD8FF06FACEF0C00DA70469B9538AC14586
5727E528731CCD92CC2F7D176742F63AAF796815CE3BE7B145869CEBF5E30D87
7E8E6C6600AEEF09A13DC5443C6D6F61D5E5A9E34BB281BDDD6668A6E6E046E3
A94EE06BC8CDF52A569226E7AB00ABDF1D45402DD886BBFC182832FA204F7109
48B5E36DDE3E16B1FFD51C0CA83CF2F0F360710BE48248952D56A27A0B16DF3C
D81624FD03B7706761B06270E45A710270A3E3F4341F8F47F6F8592AAB1B5179
34099F14EEA8D5BBBB185D8790AB102828940FCD814741C055878C426BDE9680
E0C8FA0CAEAF65BF7BB8ED332317182606C35F7098CE27433925B28610C087DF
55B1DCBC0B8E13B7385CDE5955AE78E6C6CC84035ECAA7163BD4680EA654CBAB
3F34BA5A0A3F4B9C0F1C1C33C2E921D32856BE2D9D2F6588E5E570F4EFAADE53
DE20F19B94FAB27789DB1B934A331969C20681D7DC0531431CBF01E81603267F
59C5D2008F657DC111E21A37E14DC665EDAD583C608E25E20F0EDE06BB5D2404
CE5A285940233831952572A50624BF4293F261CBF296342E2D4255C1A0BDD286
90EF26E4F17092D0B12FE5065E478ED86B55BF62F91C74F4B2D9A5271EFF0FB3
5E90030E97C06F643C4D2B85E6A4FCA0EBE44472CE71D369A9716B93BD0A992E
010AC46A59048919CE30E5EE3E89720DFE43547ED37DD2DFE366FCF4BDEF64D2
545E76FE3FF94AF68FC86998DEF4C0A595DE4843FDE5007691A1750011B4B17C
A07780803A63FAA1F5FFDC4913D5F836818B9A85CB969041B8E0055AB3086D99
7550C6F806851C89BA5C1CC736D8F694FF2207B9376130C3DC757E486AD2474B
0DA96A47F67803E3CFCAE2B8AC43EA48D03774035E6F2190C8D42FA712219815
B6BEEEDF860B515C11E30F322F635F420B4C603D7AFCDEC86AAA8229B68E70C1
A29FDE957CF4AF58B029C8E3A08C5D83BF2A29686530A7D516EBC9BAD145A184
8AC4EB3FADC1B594D8AB95C0F22BA9CC486C57E5427DEB7E13628E1FD76D555D
68DA8FA2E61D5783A95B4DB37B8A15EA7DD36467D8BA47B4B71DE443D93CBFCF
492D07EABD794D627FBC70F42FC0BD1B65107716E122CA58243D81148C2D3753
AA91F62DA3EAF84DECC777B9B0D7B41345BB3190D56CBE8B30694C668302EEA9
602F98F9F0502682481E6F96AB3D9294D917B303A8C0E6A2515B37C1ED399CA9
C2609440025129FE1A0D1EC1AE64DA02633466D8378256BD9F6AFF054E4304AB
C030BB97BD8C5299957A7045F84516F20F38837035480DFBD4688DF01F766DE2
6EAEAC0A621DFD3E37467A6833CF9F42586B1B0F0E690C6E748D1CF1800531F2
BE1BC0D795C9D40AC5D909C35FEFD43B9701870D764483D1A31267972CF6953E
132AB1A9F5EAC60F29720D51401115B462EC0304353D36BA8EA118DB7D0D1BD4
5192E870819A08850187FB240DF95E8793E113A64750C3B1CF6D33653E68D960
7B1988C1C3CE3194AD6D48303CDB714812359ABC7F6076DD9EE87C2CB92217A4
A4F5B9D1FC95867E808C00990B3090E1A2D314D25B7AC308D4ED8369B1DE3A86
94CA42875229D0FC079BE1369E7E2986EC03DAA89468DC5A3A8F58F5CF19D647
65F9481E717F87D29967E6630972924121C0D629A40C787816AA9AA95392FEC2
F14CC875153A0FE0992FCB08F282CAB1FB0419F228C6AA8EFF77C11C4EB877A5
8076E27FB2D30460E818DC4EE72F88B69474D91A1F6A323492D51FFB10DAA006
351A74B6582D8EF576FD4442BAAC92AF52D0FD510B7BF35CCDA2EC8B2E7EE1B4
11984051554F47EC9140F589C932735FB08FDDB321F01A2CD2F07CB7EFEEE4EF
6358A8AA4BAA17F33CF923D7A201BCBBE7EF1DC29CCAC418CC80780F2C1631DF
C279D58754C0CC81840BB770DFC0A887D1A74CB48337D02E28C8FEB5956C8430
58AB1F0A12A3B9138ECBB654397EFB3B9106DF45F1F76847E65237FA84544C2E
6ED4159F51C6667EB5A196F0EB03C4DFB1994A44B87A2D0985A84824577DBCDC
8922863718BFF78C9D1F9046238EC04A3F841B37A5F8383EF540612E4A31E726
AC8EC195898B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMR17
%!PS-AdobeFont-1.1: CMR17 1.0
%%CreationDate: 1991 Aug 20 16:38:24
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMR17) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
end readonly def
/FontName /CMR17 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 52 /four put
dup 56 /eight put
dup 77 /M put
dup 82 /R put
dup 83 /S put
dup 97 /a put
dup 99 /c put
dup 101 /e put
dup 102 /f put
dup 104 /h put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 114 /r put
dup 117 /u put
readonly def
/FontBBox{-33 -250 945 749}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95
A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801
BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96
96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC
9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7
E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A
497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46
4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD
3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF
B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8
C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216
9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F
83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25
A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B
246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A
7736A960F72AC01F733A11023832CD68FB6288A5977743F6F3F23E0C1657CF5D
E8374835BDBD2DED3690C84A1EBB8E2383A5E49E610B6F5F0F5F5EC43CFD16FF
24FEEFB92425CCB577E17FDE4EA6C50E1448DC5726A21888E25B6D6B52DA3D3C
E4C4C6A73C176DFEB60B6B6191B336AC4F5BAA123E1B3B6FAE4B3FA9DC8F7E39
335277EF2294315BE95F64EBDB1F393B293FD0FDB9DEE6C89082232013130D28
9234FF12DF47D454558A1EE8603B2832772E5CA07D18B34A4763D5B890F7173F
B8FEED3DFDC40985B4C4EFA511CE75E99EE2A5871351DE751DC177232659DB73
31680E5EF8C8282EFEFED988F95DBA95FB30B8EC0E03E1C641DAA7820071BD45
139230B4208432DD123893050F2D5225B0354829362BEAEC3383C65E09300471
E889A926AC31D8D8B91DF2B791DBA70AED4E94AF852052C74994ED3C5704AA4B
862706F0CFE3395E24B4E84DE0F08E2C1AFD4A96E1E98A8CF2D0F4C4C8392ADA
25FE2CBBBC1022F992BB414FD054EE541E24A515E7BB394F6BB3856F4C1567E8
7AEAE3CFB653A11A9A0170671130AEA361228631079E6EC96F2280BC103031C3
9E67DCCEFEC2C4EFF3792B5E14949280F7DF0A2D813B840017A29FB890A19DCF
B555DFFF9CEB02959E667183A85AC4E8B01B558893AA18C6ECC3590A321BC235
19AA9B1397E0CACEBA69FD4D8321FCB38FD8394B3698738B93FDD89CA6E19B57
BC6AB214D31E05B8B344C61B128CAE124925D775263A180866EBC133E2EBEFD5
2AA9389713577DE2F9DDCB8BE84D6F1C13B634170880689AFE665210285F4274
F2A0B9C65C0EAE608250A5FF01F38832C7ED07525CF1265957A452053A95A8C2
AD655300E9A730A0B1907A3E171319EC36AE1EE87357BDF1C26787929BA10BF8
F8494D1D9100279B0D5ABEC2E6A40012E399CF00E3997C6979803463D33DB945
E93C7EB9A6C7B4E814C07C05485C7C2D6B4CC161548617B0532BEAB92BED36C3
4244402F0EBE309F61CB43FA87947B112AF94FE997F86DB01BAC492325B69DF5
2EC58A1FC0B55DD673F042AFB36BC4008887F260CFCB60374D0BD4357FFEDC53
C7E67BB6CD7D0420F3339B3CED763F41CAACBB33FED153F0CFDDC7CEF6301392
953F87721ACEA63EEBE575AB008EB54F82FB0FDBC47A86B1A244DB378C171B79
E142B7C77DA1109BAF45C28516E3EE14FBABC81BF9E9FA9C337E0A08D3F04D51
1970DE49C0FAE3A820CBD7D987D2C1395A475961BA3D49465AEF7AB9D297F95D
60478505A93CFA41EF3AC53CCB40AB6074E95371D3ECE36859F335DCC4818D03
BE1717A7A9A22FC91F4A1E90D2D1FEDA11679D4EF6F668EF7CFAB5857DCF8342
12B97CA98AF2E07AD230F990F455829601DBF371EA1F0AE9FF8AF8B701C3838A
81C1CF729CA4BFC02B8E0322CF78318D9B9B5AC28C441D5456F3A786668248FC
8E85F75E77B7D645724E8C795CED1010AC1FEF5CEB9E6AFEA0BE9335D04A7B86
672BBE0CA19BD0D400E928A9DD371E111DCECCC8C6637EE0880DC45C3BAB5B97
7627E276A23FF034FA7ED8701E99CED814791072F6BFAD2BA17D9E8F7CEE9D04
368DAB7B508937395FE5010A29965D6ED2CBD1EB75A26DB122E82F2F6FF5C7F4
5FBB3B1909877DF2155CF1F2B6B80B01A590ADAD5BD7BCD258C2E5F906BD1E53
AC3ED319BB7B3BB65C1F57B5DD081520941E680575E048ECE72049E4161B9706
F928A7AD1F348025DD93F4460ACD306BAE1BB2AB3D383B60CA3E1647920193E8
4349F7A477B97ED27907D57472CCE1316C39BF68BB0DDBAE14DA777C43A004CB
E50EFCC8E3235A0978DC2AB28CEB9A0266FCAB15CC7CF8F24AFF92B1B326EE0E
5993A76E4248F40AFBB3E90AE7396F59D61A1F4ED2A2D88D0D8A46C85964BA38
A6015324C21451CCEECE87D67008EF9D355D8E646977C881E085A2963AF1FBD9
EE7B7F99E74BB586271073F30075C54C02B8999100A2C5CCC03F258F3084BDD2
F98C3355332CF7A4329A484C0306E536F1AB6DE62F82D24EF3A7C45ED99FD77C
1F5153AEAB8BF32ABB1747FF49BCB6ED49659AE026B5DFE3725F8697C0B7E440
9021BB9C316B5B43B104DB195E307A4E90DAE996EB98665BDBE35582921CBCB0
0F628B9B8BAB9C7F1BE87692A0122B2B68283E7BBD00B4612113E37729EFC35D
F1B1C28A7E02EB782D622090F87CCF1ACCFEDC445C4ADB71073DD838DF4E21D9
B2474D6315E1BABBEDF9AD1DBB0F70C6102CFF9C5AF813BEAC716FFEA123A447
5E57CCCD545D757118169DF9E137C855A0ECEFC2F2F844F82F3F35C64CAE9756
10A8564CAF6CDEE9ACB193135CAD31224D2D4C0A173C310F96F5AA8987B0F499
1750A66681EC9B485973556F022624AEC6D6DF09A1CBBE2462AEFE83988D6E95
9C1D5496DB40F45AC37E3FAB166035055DF2D72306D8854BF952F27E6AA6F628
489CD0F218B91CF4277C49B464A8A567F6FA841850913EEC3071B76160D20135
DC784DDEB4C1BAF76D3C1AFB862E96EDFE0DC9E0878C7820B3EE34814C049B9C
2943CE5F37D1360342A651900C64F48B91047309B57F43E7A387793B020BAA4D
981CAE6E492FDE2746B1F2C060D5CFC5406A220893CF8DC6176B301EED3F4AEC
EE2B3A0A5471D521AA1D66A9F4960C5C32981DC94787E0870D1341E434CB307D
C02E591EC1780C2B7CF713AF52A95BD016B1AB23E547D1F16CDE36BD34C68ECD
D2D14854A4B7008D6073AFE45581A547CD6A48F129E6E63F052B420E6544413A
31AFB2791484232BEEADB3C3A7F6431F394C9CEC0CA981942E5D1CA6E1FAE73F
DECEB8F489F482033AB6F7E6385CA027995A57C86534637DCC82A4BC905CFA0E
442328FA5CF4C587BBF4D15A6E84F78358D61196BD7FBBEC9E16975D850239B7
D4AD1DB92858FEEBC0879DEC0366239251BDB2184CEE94C436304D50F0C5C2E1
688ED36BB580B8DE9DE0F1DC1BE9E0A9D03DE7D042431C4D4F0B0C666FD18066
B21A4D4F645696D310CA8E174147215FB64C66EF3CF6A8DF67AA0215A258C810
F652CAED0AED78D80DB2732579160C912C1BE55DD2210CC29699FB07D6460690
F9D7AC2A535A1C2686DAC4A337A0ADA64CA39D76834824A136D90D0AA8B945F8
9557EFECC4393FB6696E3A43116B2C3566C21FC489599641AAD29F93D6CE38B9
522CB5D5E04B6AAE0CD9D59A51429981C613D9B1A63D913007B0BB23D642A6AA
E089F218FC6140B8F6834B673959FA3F32E84D9F5B8F822A98E834E3B22136F8
9E32B41BFD9AF01D3A6D9F57E1D1847C7286B442DD6B04BA12271A67684C7634
231E057DA027C4C3069841A5A13E20740F0F8E213E4866A1C67659037571D5B3
42DEF17E7FE8C305782DCD1735B5B488162A109A90FA73B1202E88E153D71484
782A8DF0D8499908B8657EEA0E243E42575D97C90DC9D183B959D4E6CF5760E9
D21133F4998ED1E775D99854A05404235F441F4E24E0F3F4563264689856E95F
5D2F1DE42F438A5B960813BA7655E5CAEC4670D5E9AC8EBD897AB1F7A64EE6F1
C24881F53A94CFA53CCE2C12B3A0DFE34FAA449289815686CA6519860901965C
5835B2B588613D6D4464BA19FCFD44EEA93938D9613A4E478C12476408A822DC
901AF04453E53C8CF9CA607266965AC1AA058A77640AD98B7B2D1991B7E1B16C
752A423EC0139F1907887A5ACDE692C9FC9038813FE2203AA7BF3A3775D43992
F3F7C553C90D311B3F9F16E11BA084761BE599DB72CC4B641D80457D138335B4
AEAF85CBE2D34C8568F412A0DB50F1FD53122CCA40CB317257B0486F426E1618
36CA2D3D00E260C363CA138AD2695747BC1A75E7A2CA5D8E377525B0D2658FB1
3FE2EA35041C134025D8524B276A560F55B2E3ADF7438D96AED3CC8CC5A01892
528C237B70CE0DEF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
%%BeginFont: CMR12
%!PS-AdobeFont-1.1: CMR12 1.0
%%CreationDate: 1991 Aug 20 16:38:05
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMR12) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
end readonly def
/FontName /CMR12 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 46 /period put
dup 49 /one put
dup 56 /eight put
dup 73 /I put
dup 74 /J put
dup 75 /K put
dup 77 /M put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 121 /y put
readonly def
/FontBBox{-34 -251 988 750}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E
59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28
51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23
DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A
AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F
45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31
821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE
96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D
9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379
26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4
140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213
1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498
1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB
377D3061A20B1EB98796B8607EECBC699445EAA866C38E03ED7D4F3EDBCA1926
2AF6A41F67AFCFBF3630C943FA111E4CCD988A7363F7C2B75EAF5830B049460E
0D2B337988F150B9182E989E7750C51BA83DF37685483F86D1F47478883F3F6A
4B7F768DA5AA89E8F163029ADD4A9209DE8A4F285766C06EA859639B92CCCDCA
F59B1C2BB8D588CA754D1257BFF76B53984DF4937093AAEF79009D32A29A4C16
FB610C7D6713482C48D7F9E8410C0F00AD6E67021056B6035534E79F05D14EF2
4E87E49C65FC342CE45A774EE3796F7D7BA2ABE47E89F92BB05E53465D2805AA
0959E3549665201BF84C23F6215E3AD69E20095E98A203D623DB50D05F7299AD
E0F6CBB2A1382AA2C2F57E2950036BB653AF7C2F1DF30D0F674D6B61E97348AF
4FCA4A3FC24B7AEAF7484882B37F1BFF4F2B1B8EA3E66D6C69B66A801EF35BD4
8EA12C6960CD7A821E3E1F2E9C294235692F980D00A6766E40A1E362B8A5A48B
06B925816A55AC7E025F522DD833E05E1FE2435491101B4C741EDF6BE7748E79
E4DE28102895BEB86E63DEBF5DD997C21DE7F9783D443EF954CEB8ACE75A162D
B7918797481C75DC542AF50AA0B967DDE07FBCE0F5994431C5D037D6FA6BDF3D
B3D25AA495D75D373F515437547949036EB88B7AE3A61072290B915432F914FF
0E755F2D387322F2536903A9AE5DFA2967DE70B8237C0D91400E7AF01B3AC953
473E2AB865560751E2B859739842C865A53DC1F46F573F29F444B4B2B0AFA2EF
D53CE0C8958BD7B640694839875765B301F3F46032964C5EE323C464A65B3895
8557F836A8834EC941338FE14A71B3FFC39E7E048745765B7A8E595941444720
C7A9A39D2A6048CBDC6CB36D6D0BC2EFC70A480EA48A4476A709EF9B10855433
2961194E87D6A5B5B81D14AB098BA708702600DC26C860C00BD905FD22D600F3
0F1DD559E4726FACD531FB2A01F25933A1B983FD02A853B15A3249CAE1B27631
EF1837403A7CADFA700F8D295BEB9058F0428154DABFA32AE7A2AAF82F3F0910
75082D5C190508CE6CF1DEDF40E247D3E438BDC10652449A2DA10661AD88F59D
4A629AC8A73E412D924B6A19F2EF0BE573231A40E3D60E351A982FDB36BF5376
C78CE9C94145528E6B066DE622304DC3898BC479126BD73F90321F823D9D539E
818A3956CF8A55C7151A668B38F7693B0D28DAF04E390FEBFA39C792A822FC07
A9B6200119C1A7BA3266ADECF0C7240E1222F429A2119F6CFDDE0F4A1AA27FF2
FE895D24E3474A88A15E000D92DD61A6FA87BBF468E843E82DFC70DD0FF4C47C
9A2F8A53F73E6C49E0DC35AC9AE4DA68C8DC02348FBE0695D89EBD27196B3261
4F34FA93EB5E3EC001C52F76C98B2E761BC5F471965B54C1205DED6822563A2A
E42A59CD512F0D9780745A4B77C32B126498DF65BA054FA9D47BD86B9F7F0013
9497A5CDEA423151E07C1679E2E7BD66FE9D0E7BA84684B974F81C8E4659A647
90953B0BE8E1785ED460C6B56752F2C3C785F58B9D2341222B0F66041952D22D
24CDB8B3B9488C5CB090DAFA7561882DBA7EE347C92F36832FA885F87A40705E
CAFC6658A476B1DF844719E66F7C0CB281724836CA8F0697B4E896D5F2D802CE
54639D6DB39617193E63048DB22E4A7BC282A26B8847F11EFB8BF17BD396F8CA
B82471530A6147B52C10946FCAD4197DD01B07F680E40408F7ECA37D0546A943
B992A0BAD858C37C553D1080C1547907F672F02104846FC6123BEB7DC6F83AD5
7AD1BDC336D6F106417B8A722E90251DB0184371445FC9C7EF63F0B9216650C6
C8776C6B2F9E2C24B8080D6581D7AE2D89596321FF9A60E5111DF68734D7463B
920FCBA2708EE0C0659ADEAAC09CFC2C1C7D6236D3519D7746EF4CEDC095CEA1
7E1A5CD00FF00C68D553337A97FA71804C75C735F999BD359267D2AC28C50F5D
D8AD5AF4665E9F5DC769169CDAE128E1FEEDEE4384AFA76A948ECBBC9A8BE4C3
8396BC9D0754F78BF0999915A9E984DB95111411D6A9235DDEBDC911568B1F0E
88B795EDA538A03EB06E3DF0BA9401CF757FB406038B9325FB99B4FD11C8AF49
A8C38855D81303125C1EDE3E52EC52A43916239C35500B459529DAD0461BFEA9
0269A83A25F42ACEE8EAD091262D388B5F9B7080E577E1425FC62BC4410522BF
495D062E5833FECADA1E024BF152AB84274D765C55D6AAD4C39D1C48E0434F9A
7D0FFA526EDA7586D45186B972A621591073686E6EBEB6268FABBD8010CC0F31
C3B531FCCE3FC4361B7EE80B29765F9CCCB00B767F7E0603AD23864DF666F2CE
E435E2225C5D4880A5CED47E4D81BB550D4A8DA2F7A9576450BE7C88D629E7FF
1B0EE7A15B89EE5E71770C8162ECD2061E3E04A26A821703FCAEBDABECDB05DC
573661378E5152B66A68D73BC73603C2F18A01D1A02B10F4CBC3173BCE40DEA7
2733C3321060933B7864C586FA89460F927A91914486FC5579F35A7EFFD45D9A
963ACA72EC052DBF386F4461F819782F5EFEC54E65DCAA57BF2A7C98EEA2C336
28A89378F5CD90DFB59506CD5961852803F6BBEA6D147D54AECC4F57E2431112
52F6A5260039F6E311DEC872FDE298E5AEF8567A195AEE6AF83BE77EA4D22F44
FA39971E2B51308797ED1B39091979827CE1AC2469BC1794BCF241201429B8A3
A2EF2CA8959EB46D5FDA4DDF85E65E7934FC40F02439FFBF807A9C329E6C9618
88B21E4DAE4796A7A2913A7B64327AFAEC5DFB3461FE17C830BE766DAFAB1435
B123B1E0C2E5B46CB80A3137212D90D0D218DD36489D0A1C9B8077028300D2A3
3CAE21504E84CFC172A8C5FCDEE232DB5C0DF5A60E559944676743CFC9A8920A
2D771C3F42EA0C5DC10DA4CAB1FC1E87D01FDEDB2B943CEA044ED70D9A174CB7
116F431117D89B0B1CC285A096217171318FB41815A035A2A1479FB432A0111B
B2333EF47547F326D017A24A6FCE7C131CEA19F78725A3704E5CDB08608AFCE3
0C5C5DD0F08A3136EECF47879635CD36328A2EF15051B279C32BC07C485312AC
7E91291577CDBFAA06E46F3E80DA345E4168802029A3BE74FA2AB5C7D547286B
300A3270E8AC0988D3867E5DFD21D97DFBC93C97C4D806676B13FB0EC4770D2E
F08274956D5F269719AA9E155B6791F8C0391738A5E544F7027F59FD8F2FFC8D
68458EF7BDC016DC58612801C5080423BF8FAFB198184942EA5652A767FAFC89
A882F6F4ACF147355460BE0CE00339F23A676AE857C305D1E37A553D1EF21E1D
E9062C5EE380C769916D6C2E1858B6E64564B2C3149F031BD19718C516D0A683
04BDF2E9EC67C11F2A15367A8E122A46D714609D54EAD2157FCBD5054232017E
202FB8889E8182123DE7A87CFE7612E2A0D67DA9C2806C91020C4C666C5C2B77
857B0538DA7960CC1115CB6B55A5CDDEFF5D72CE512FF4B33ED8A62F31627CE4
0CBE18DD7D621FD149FC8A2E2BE17340E0F0C271CDBD55274FC42890691A1A84
66C4E48E437BD558D810459289E5281D1F2691AA8D11482316604F93C54AC752
5C04A87BB217702770A1E12EC8A74536FD9079466DFC6D0CCCA671B5639FFC6E
ADD9F8BC16F43750BC0DF1F1DD94FD2652C0FD0409F7847DFD657C0CE76A576F
1901E4B51EE595A998D8A0B5626F882CD5B28B0AB82D6AF27D4195165A37F4FF
2DD0F87FB2DA5A026BD127C1EC199EF7053D3928016B85392DE22F6CAC60FB68
5A4F2C934BBC624D8738E580CC350D05563577E5879C5D194A30B031C7C6A707
2192ECCFD50E99C1CCE0036AB929078E49575BBE524843296373E78F2D242DE8
8DC8E1E7EF1347AA5A8A1CDED736ECF7B245994123421FE89CE74108E24E2F5C
77FB115944AF46AC1EB690B33EEDF3131C01F375BE947438FF329C5475250324
82D0D3EA619AF2E6C33924598BC559DE122AFC9C24AC8B610DFD78A55D51B407
5C181CB280381063F63CA3184C4E8EBBF32DFA7D528E811C5A4BF61E47BEAED2
5A51E4213550BEDD14BAD2517B2483F7586CD05A020EDBE4F02FC90038079A18
702D1BBF361DAC5F3EAD553C79E74325041528E9FB5BA0C4F3563E203922B47F
8D083A5080E71276A97D8A53B55CA43AE917750421D8B9D395EE1970E5772607
8099CCC324FD6EEE67B8647BE82256E5B8CBDDF54E3B2E5966E8779D53934189
36463A7AA026C160080109FAFADD0D2A1EA608035519BFA5AC78014ACAD39AD0
2CEDB4338E2A27F8A6F1A535F1C5347CEB53693B5D49A343C2E61C6F0D66BB1B
EBEA1912A708AFF63D873C1AFE5C0F5634A9271B6A45AA49DA7055780A1A761B
3A4591084EA20FAFDCDA35C4F3EA6DC9A5B0541942CA8BEB3176284C9849AAD7
CB7286947957CB1DD02B9DF15CB5A1541C083F383FB2AD00C2AD90F6D16D5AB7
D24F26DE83500CA088E604654F2C82C113E94793CA33C56D553949B68E105E36
019B409A9FE8A8A5C2AD05E130853DB436F72BB14B5B7760887D488647A5CAD7
DB4553D6E45BB16F07BBE83B83583D395CD74F6F0058D820009CA87055F06A3D
CA3C6C79A7238ACE45069A61A9B9E077E1CC4CE1E8C039A0F253A066C9E330E8
797462003B9B06EE747BA1FC32EABB6DA861DE2C91005477E4C2EF21FA4C6D7B
7ACB7F7C6C7BC9E6B8F2F96F0828B092E73288388EDD7583FE2DDE7930CA4D98
05E88919F92BB6BECB84FEF8C7585CCE1F21212B07424581BA04A64B23BA6E4D
731EF261F1A6295F32855E9461D14A8DC304A567F0220BD0B6A2C0B3AD2A9472
101EF9B074DE91DE89891610F38B38C20B7B11D591BA77EF57A7F825CD3748E1
B76F91257ECDBFC78FA05A429A9D5356F07600867AA751C53D457B61926143D6
F8061C13CCC96BC997778597B41E3D584A89BC8447181FFBFEE42A7CEA0A277B
E9397E3E0D383962218FA7A5409126E0779163F570A4C3DA5DDCF488E5161265
501356674AC14B870D13FE89DE8FB650B0CABC0192948EEFBBFE5B622AC7171C
872F6795534B7A506001F279CB6D6B50A551E4E6C47F45A7CFF2CF1547C9C9D7
53C253ED12F8971AFCB201AF286E8C7D27040C9C97F95A63306FB631B6DBEFA6
C6B99FF8D54E50E5C63102728EEDE41E432F3488DC65A0BC5BA7AF0BCB2BAFE4
AD5217A01730F11F4252DFADFE4CFC5D9BF29DA29371D94522DF3DF2ABDC26DB
66E0FD0602A2BECF0C342DF88F73C1CFD34AA111A0C2B1A9AFA9A7E3AD490B14
6952E71F9086D82E83C81B510B9E31DA54766433FAD2B16F31B506D355D29B57
780F974C5DF879668F2D1F0D793439BA1E98D585448EFD90F13E69EB2C7CE409
6CF068FC029D56F32987B26CC395DEDDD6E66877507C7844F5C7C53AA53EDBE7
CD8828466E46653AF8BCF1C1323FADF74B5BB1FF6110CD5EE99400E12B7790BE
A0B515DA86CB238082CDA84ADBED9E121351017732FB6495CBE5BDB20FB90718
AF6630E5EB995081FC8876263022CD206A49D4F23A6BBDA60B525E34CC82A843
DA1E9A782196237260388E5FA7263A53CBE61C5D1FFF2D4178356301135F69E1
CDAF4EE6200D54281CD9A8DD7B19C2349A4D1ABD10011A93E75AB3A33376381E
EC97D7E3BE4C54B727639087EE8EDF6D316387504D327A28956B6D0AF3957A40
E5FECA4D71A0214B1411496AC074B7425602DE554366C5105281B3DD8F8DA82A
4BB48671F4309F7275103F424192E255C2DCA9E8945F64180A211227FE91F84C
C041221626003E38F608CB76498B5644EC20E78AEAA8FE471AA4B11031B7334D
F2CEDE30488ACA910D3CECE2E1A9FC82D1D01B03C7AD9B8E3F4400690ADD2254
BA4A13D11228F25BFB989E0E698DEEC4882B343CCF7318E42CF90850D9B4F367
D54BE0B13107F5E29DE3334CEB17E6E69DF3DAA6D9A671A0006B6A62BBC3D281
04AF3E82B4CB34630D16085BF160FC56291F32D217D08CCDEE136E207A0A7D72
90C10D51420572214B3A0B16D1B5F042BC90B477D8196CD55BBBBA65CA173CA1
405C3910821C9CFE60C20B492245CB312C9C15A3863807C7E0E399E681EFF374
497CAD3F170523E4B2B789CCDE87BC5A7FB9C69A4E989312A532E1CD22F844C5
C512E5E0CF8427A81A3D489FE8FD03348C8E1E665D89C691777335BC328AD363
5AAE9DFC515BFA21F8D23E9A8E828AF0443EF29922D9E6FD853F83BEFBDFDE76
F5C6E17F068480AC803F3260C071D04441DD34167979328B05AB6E2B3CCB553D
96F228E363AB6C72794D0E98197BE77C5FC04D689210365D02081FAEDAA176BB
80397D93E66DF7BD26BBE9AEA3AE12B3ABEEEC125754F373EF249251C2E4ECDE
2B1D074DEE41BB4C204BC4EC014F9D34594E31962317C23E884A6510BE6FE929
3C5676706390A5D6BD7F75CF381EB30DC2DBF95791E42EB5F3E67B6563D92657
FD4B235771FEB40CB095C26C81C8CA8A46956EF828066625F9B36EEA6BF60115
DEE9F9306ECC7EAA95C3E7D2E58CC3F45E75BD145C19F73905D1F456E1810F32
C54694470D721921E5B94E09E9ABCE9134C6E3690F80BD419E71ACDFD598D1AA
01C373C32AD71D68FD176F2EAB703D9BD980466CE2ADDB423B08585316EC85D3
73760B35AB4F28DE8B59F66C965DF067F89E5582F0EAEE17BA01DDCA463E705D
08DC0B406E4C0149289AD5A4F9DC4A1867A1D09543954A0B6958A5834EBACB6C
37EB8D1800AEAED871DA356823F5ADB5DC32E2B13EF568F95C314B86E30D7B98
2C33A33D22E8F457E8814AE3A2F0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont 
TeXDict begin 39139632 55387786 1000 1200 1200 (manual.dvi)
@start /Fa 145[82 4[47 105[{}2 116.231 /CMMI7 rf /Fb
135[103 2[103 103 1[103 12[103 103 103 1[103 14[103 8[103
3[103 69[{}11 199.253 /CMTT12 rf /Fc 133[100 118 118
162 118 125 87 88 92 118 125 112 125 187 62 118 68 62
125 112 68 102 125 100 125 109 8[169 232 2[156 125 167
1[153 168 1[213 135 175 1[83 1[176 141 147 172 162 159
169 7[112 112 112 112 112 112 112 112 112 112 1[62 75
32[125 12[{}57 199.253 /CMBX12 rf /Fd 134[81 95 1[80
3[75 3[100 4[57 2[81 2[72 19[127 133 10[119 4[129 1[129
46 46 42[67 15[{}16 166.044 /CMMI10 rf /Fe 207[38 44[68
3[{}2 116.231 /CMSY7 rf /Ff 220[123 35[{}1 239.103 /CMTT12
rf /Fg 149[46 65 65 83 83 10[111 49[166 7[166 12[129
4[83 14[129{}11 166.044 /CMSY10 rf /Fh 133[81 4[103 64
81 83 1[98 1[108 157 3[59 98 88 1[88 3[98 50[59 46[{}14
166.044 /CMBXTI10 rf /Fi 133[120 142 142 194 142 149
105 106 110 142 149 134 149 224 75 142 1[75 149 134 82
123 149 120 149 131 9[278 1[207 187 149 201 202 184 202
1[255 162 2[100 210 211 169 177 206 194 191 203 7[134
134 134 134 134 134 134 134 134 134 134 75 90 32[149
12[{}58 239.103 /CMBX12 rf /Fj 198[66 2[66 66 66 1[66
66 66 48[{}7 116.231 /CMR7 rf /Fk 139[151 1[158 1[215
7[215 2[177 3[188 29[280 9[194 194 194 194 194 194 194
194 194 49[{}16 344.375 /CMBX12 rf /Fl 129[87 87 87 87
87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87
87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87
87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87
87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87
87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87
33[{}94 166.044 /CMTT10 rf /Fm 131[191 2[101 101 138
101 106 74 75 79 101 106 95 106 159 53 101 1[53 106 95
58 88 106 85 106 93 8[144 197 144 147 133 106 143 1[131
143 1[181 115 1[99 72 4[146 138 136 144 7[95 95 95 95
95 95 95 95 95 95 1[53 64 53 4[53 26[106 111 11[{}58
166.044 /CMBX10 rf /Fn 134[245 245 336 1[258 181 183
190 1[258 232 258 387 129 245 1[129 258 232 1[212 258
207 258 226 8[351 2[357 323 258 2[317 349 1[441 279 2[173
5[336 330 351 8[232 3[232 12[129 39[{}36 413.118 /CMBX12
rf /Fo 133[68 81 77 110 76 89 55 68 70 76 85 85 93 136
42 76 51 51 85 76 51 76 85 76 76 85 3[51 1[51 4[123 123
119 93 121 1[113 127 123 149 104 128 1[64 123 128 108
113 125 119 1[123 1[85 6[85 85 2[85 2[85 85 1[51 59 51
127 1[68 68 51 25[98 93 102 11[{}63 166.044 /CMTI10 rf
/Fp 131[166 83 74 88 88 120 88 92 65 65 65 88 92 83 92
138 46 88 51 46 92 83 51 74 92 74 92 83 46 2[46 83 46
1[125 125 171 125 125 120 92 122 129 113 129 125 152
104 129 85 60 125 130 108 113 127 120 118 125 129 78
1[129 1[46 46 83 83 83 83 83 83 83 83 83 83 83 46 55
46 129 83 65 65 46 3[138 83 19[138 92 92 97 11[{}87 166.044
/CMR10 rf /Fq 138[147 2[102 3[147 222 72 3[147 1[79 117
1[117 1[132 13[147 195 4[244 20[132 3[132 52[{}15 286.924
/CMR17 rf /Fr 134[103 4[76 77 76 1[108 98 108 163 54
103 1[54 108 1[60 87 108 87 108 98 12[141 108 144 4[179
1[152 100 70 16[98 6[98 2[54 46[{}28 199.253 /CMR12 rf
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 1200dpi
TeXDict begin
%%PaperSize: A4
 end
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 2776 4306 a Fr(The)65 b(Incomplete)1770
4671 y Fq(Sc)-7 b(heme)84 b(48)i(Reference)e(Man)-7 b(ual)2857
5037 y Fr(for)64 b(release)g(1.8)1130 5767 y(Ric)-5 b(hard)64
b(Kelsey)470 b(Jonathan)65 b(Rees)470 b(Mik)-5 b(e)64
b(Sp)5 b(erb)g(er)p eop end
%%Page: 2 2
TeXDict begin 2 1 bop 1893 1046 a Fp(A)43 b(line)i(ma)-5
b(y)44 b(tak)-5 b(e)43 b(us)i(hours,)i(y)-5 b(et)44 b(if)g(it)f(do)5
b(es)44 b(not)g(seem)h(a)f(momen)-5 b(t's)45 b(though)-5
b(t)1893 1245 y(All)55 b(our)h(stitc)-5 b(hing)56 b(and)f(unstitc)-5
b(hing)57 b(has)f(b)5 b(een)55 b(as)h(nough)-5 b(t.)5020
1611 y(Y)-14 b(eats)5020 1810 y Fo(A)-8 b(dam's)58 b(Curse)4296
10511 y Fp(ii)p eop end
%%Page: 3 3
TeXDict begin 3 2 bop 581 2374 a Fn(Ac)-13 b(kno)g(wledgemen)g(ts)581
3238 y Fp(Thanks)44 b(to)e(Sc)-5 b(heme)44 b(48's)g(users)g(for)f
(their)f(suggestions,)48 b(bug)43 b(rep)5 b(orts,)46
b(and)d(forb)5 b(earance.)581 3437 y(Thanks)56 b(also)g(to)f(Deb)5
b(orah)55 b(T)-14 b(atar)55 b(for)g(pro)-5 b(viding)57
b(the)e(Y)-14 b(eats)55 b(quotation.)3376 10511 y(iii)p
eop end
%%Page: 4 4
TeXDict begin 4 3 bop 1478 2378 a Fn(Con)-13 b(ten)g(ts)1478
3414 y Fm(1)154 b(In)-5 b(tro)5 b(duction)4333 b(1)1478
3785 y(2)154 b(User's)63 b(guide)4356 b(2)1727 3988 y
Fp(2.1)170 b(Command)56 b(line)g(argumen)-5 b(ts)125
b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)263 b(2)1727 4191 y(2.2)170 b(Command)56
b(pro)5 b(cessor)133 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)263
b(3)1727 4395 y(2.3)170 b(Editing)165 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)263 b(3)1727 4598 y(2.4)170
b(P)-5 b(erformance)53 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)263 b(3)1727 4801 y(2.5)170 b(Disassem)-5 b(bler)154
b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)263 b(4)1727
5004 y(2.6)170 b(Mo)5 b(dule)55 b(system)124 b(.)83 b(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)263 b(4)1727 5207 y(2.7)170 b(Library)159
b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)263
b(6)1478 5579 y Fm(3)154 b(Command)64 b(pro)5 b(cessor)3682
b(7)1727 5782 y Fp(3.1)170 b(Curren)-5 b(t)55 b(fo)5
b(cus)56 b(v)-9 b(alue)55 b(and)g Fl(##)148 b Fp(.)83
b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)263 b(7)1727 5985 y(3.2)170 b(Command)56 b(lev)-5
b(els)157 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)263
b(8)1727 6188 y(3.3)170 b(Logistical)55 b(commands)91
b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)263 b(9)1727 6391 y(3.4)170
b(Mo)5 b(dule)55 b(commands)113 b(.)83 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)263
b(9)1727 6594 y(3.5)170 b(Debugging)56 b(commands)142
b(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)263 b(9)1727 6797 y(3.6)170
b(Settings)120 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)180 b(11)1727 7000 y(3.7)170 b(Insp)5 b(ection)55
b(mo)5 b(de)152 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(13)1727 7204 y(3.8)170 b(Command)56 b(programs)130
b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(14)1727 7407 y(3.9)170
b(Building)56 b(images)i(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(15)1727 7610 y(3.10)87 b(Resource)56 b(query)e(and)i(con)-5
b(trol)130 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(15)1727 7813 y(3.11)87
b(Threads)111 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)180 b(16)1727 8016 y(3.12)87 b(Quite)55 b(obscure)83
b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(17)1478
8388 y Fm(4)154 b(Mo)5 b(dule)64 b(system)4018 b(18)1727
8591 y Fp(4.1)170 b(In)-5 b(tro)5 b(duction)51 b(.)83
b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(18)1727
8794 y(4.2)170 b(The)55 b(con\014guration)h(language)139
b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)180 b(19)1727 8997 y(4.3)170 b(In)-5
b(terfaces)133 b(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
180 b(21)1727 9200 y(4.4)170 b(Macros)51 b(.)83 b(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(22)1727 9403
y(4.5)170 b(Higher-order)55 b(mo)5 b(dules)166 b(.)83
b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)180 b(23)1727 9606 y(4.6)170 b(Compiling)56
b(and)g(linking)117 b(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(23)1727
9809 y(4.7)170 b(Seman)-5 b(tics)56 b(of)f(con\014guration)h(m)-5
b(utation)134 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)180 b(23)1727 10012 y(4.8)170 b(Command)56
b(pro)5 b(cessor)56 b(supp)5 b(ort)163 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(24)4275 10511 y(iv)p eop end
%%Page: 5 5
TeXDict begin 5 4 bop 830 1046 a Fp(4.9)170 b(Con\014guration)56
b(pac)-5 b(k)c(ages)55 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(27)830 1266 y(4.10)87 b(Discussion)76 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(28)581 1665 y Fm(5)154
b(Libraries)4548 b(30)830 1885 y Fp(5.1)170 b(General)56
b(utilities)e(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(30)830 2104 y(5.2)170 b(Prett)-5 b(y-prin)g(ting)123
b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(32)830
2324 y(5.3)170 b(Bit)-5 b(wise)56 b(in)-5 b(teger)55
b(op)5 b(erations)107 b(.)83 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(32)830
2544 y(5.4)170 b(Byte)54 b(v)-5 b(ectors)52 b(.)84 b(.)f(.)g(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(32)830 2763 y(5.5)170
b(Sparse)56 b(v)-5 b(ectors)54 b(.)83 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
g(.)h(.)180 b(33)830 2983 y(5.6)170 b(Cells)93 b(.)83
b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(33)830 3203 y(5.7)170 b(Queues)47 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(33)830 3422 y(5.8)170
b(Arra)-5 b(ys)87 b(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
g(.)h(.)180 b(34)830 3642 y(5.9)170 b(Records)127 b(.)83
b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(35)1212 3862 y(5.9.1)190 b(Lo)-5 b(w-lev)g(el)56 b(access)g(to)f
(records)160 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)180 b(36)1212 4081 y(5.9.2)190 b(Record)56
b(t)-5 b(yp)5 b(es)125 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(37)830 4301 y(5.10)87 b(Finite)56 b(record)f(t)-5 b(yp)5
b(es)98 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(38)830
4521 y(5.11)87 b(Sets)56 b(o)-5 b(v)g(er)55 b(\014nite)h(t)-5
b(yp)5 b(es)90 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(40)830
4740 y(5.12)87 b(Hash)56 b(tables)114 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)g(.)g(.)h(.)180 b(41)830 4960 y(5.13)87 b(P)-5
b(ort)55 b(extensions)99 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
180 b(42)830 5180 y(5.14)87 b(Fluid)57 b(bindings)170
b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(43)830
5399 y(5.15)87 b(OS)56 b(strings)73 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)180 b(44)830 5619 y(5.16)87 b(Shell)56
b(commands)48 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(45)830 5839 y(5.17)87 b(So)5 b(c)-5 b(k)g(ets)166 b(.)83
b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(45)830 6058 y(5.18)87 b(Macros)56 b(for)f(writing)h(lo)5
b(ops)85 b(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(46)1212 6278 y(5.18.1)107
b Fl(Iterate)79 b Fp(.)k(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(46)1212 6498 y(5.18.2)107 b Fl(Reduce)166 b Fp(.)83
b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(47)1212
6717 y(5.18.3)107 b(Sequence)55 b(t)-5 b(yp)5 b(es)105
b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(48)1212 6937 y(5.18.4)107
b(Sync)-5 b(hronous)57 b(sequences)c(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(49)1212
7157 y(5.18.5)107 b(Examples)118 b(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
h(.)180 b(50)1212 7376 y(5.18.6)107 b(De\014ning)56 b(sequence)f(t)-5
b(yp)5 b(es)116 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)180 b(51)1212 7596 y(5.18.7)107
b(Expanded)56 b(co)5 b(de)94 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(51)830 7816 y(5.19)87 b(Sorting)56 b(lists)g(and)g(v)-5
b(ectors)107 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(52)1212
8035 y(5.19.1)107 b(Design)56 b(rules)61 b(.)83 b(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
g(.)h(.)180 b(52)1212 8255 y(5.19.2)107 b(Pro)5 b(cedure)55
b(sp)5 b(eci\014cation)167 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(55)1212 8475
y(5.19.3)107 b(Algorithmic)56 b(prop)5 b(erties)76 b(.)83
b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)180 b(63)830 8694 y(5.20)87 b(Regular)56 b(expressions)47
b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(63)1212 8914
y(5.20.1)107 b(Character)55 b(sets)159 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(64)1212 9134 y(5.20.2)107 b(Anc)-5 b(horing)70 b(.)83
b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(65)1212 9353
y(5.20.3)107 b(Comp)5 b(osite)56 b(expressions)85 b(.)e(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(65)1212 9573 y(5.20.4)107 b(Case)56 b(sensitivit)-5
b(y)71 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(65)1212 9793
y(5.20.5)107 b(Submatc)-5 b(hes)57 b(and)f(matc)-5 b(hing)69
b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
h(.)180 b(66)830 10012 y(5.21)87 b(SRFIs)126 b(.)83 b(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(67)3402
10511 y(v)p eop end
%%Page: 6 6
TeXDict begin 6 5 bop 1478 1046 a Fm(6)154 b(Unico)5
b(de)4603 b(70)1727 1247 y Fp(6.1)170 b(Characters)55
b(and)h(their)f(co)5 b(des)168 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(70)1727
1448 y(6.2)170 b(Character)55 b(and)g(string)h(literals)62
b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)180 b(71)2109 1648 y(6.2.1)190 b(Character)55
b(literals)67 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(71)2109
1849 y(6.2.2)190 b(String)56 b(literals)86 b(.)d(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)180 b(71)2109 2050 y(6.2.3)190 b(Iden)-5 b(ti\014ers)56
b(and)g(sym)-5 b(b)5 b(ol)56 b(literals)80 b(.)j(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(72)1727 2251
y(6.3)170 b(Character)55 b(classi\014cation)h(and)g(case)f(mappings)44
b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(72)1727 2451 y(6.4)170 b(SRFI)56 b(14)98 b(.)83 b(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(73)1727 2652 y(6.5)170
b(R6RS)154 b(.)83 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)180 b(73)1727 2853 y(6.6)170 b(I/O)42 b(.)83 b(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(74)2109
3054 y(6.6.1)190 b(T)-14 b(ext)55 b(co)5 b(decs)91 b(.)83
b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(74)2109 3254 y(6.6.2)190
b(T)-14 b(ext-co)5 b(dec)54 b(utilities)73 b(.)83 b(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(74)2109 3455 y(6.6.3)190 b(Creating)55 b(text)f(co)5
b(decs)95 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(75)1727 3656 y(6.7)170
b(Default)54 b(enco)5 b(dings)49 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)180 b(76)1478 4024 y Fm(7)154 b(Threads)4608 b(78)1727
4224 y Fp(7.1)170 b(Creating)55 b(and)h(con)-5 b(trolling)56
b(threads)142 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)180 b(78)1727 4425 y(7.2)170 b(Adv)-9
b(anced)54 b(thread)i(handling)75 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(79)1727 4626 y(7.3)170 b(Debugging)56 b(m)-5 b(ultithreaded)56
b(programs)62 b(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)180 b(79)1727 4827 y(7.4)170 b(Optimistic)56
b(concurrency)169 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(80)1727
5027 y(7.5)170 b(Condition)56 b(v)-9 b(ariables)69 b(.)83
b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(83)1727 5228 y(7.6)170
b(Mutual)56 b(exclusion)101 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(83)2109 5429 y(7.6.1)190 b(Lo)5 b(c)-5 b(ks)144 b(.)83
b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(84)2109
5630 y(7.6.2)190 b(Placeholders)168 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(84)1727 5830 y(7.7)170 b(W)-14 b(riting)55 b(custom)h(sync)-5
b(hronization)56 b(abstractions)163 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)180 b(85)1727 6031 y(7.8)170 b(Concurren)-5
b(t)55 b(ML)h(abstractions)k(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(85)2109
6232 y(7.8.1)190 b(Basic)56 b(rendezv)-5 b(ous)56 b(com)-5
b(binators)64 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)180 b(86)2109 6433 y(7.8.2)190 b(Sync)-5 b(hronous)57
b(c)-5 b(hannels)137 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(87)2109 6633
y(7.8.3)190 b(Sync)-5 b(hronous)57 b(v)-9 b(ariables)117
b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)180 b(87)2109 6834 y(7.8.4)190 b(Timeouts)133
b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(89)2109
7035 y(7.8.5)190 b(CML)55 b(to)g(Sc)-5 b(heme)56 b(corresp)5
b(ondence)162 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)180 b(89)1478 7403 y Fm(8)154 b(Mixing)64 b(Sc)-5
b(heme)63 b(48)h(and)g(C)3184 b(91)1727 7603 y Fp(8.1)170
b(Av)-9 b(ailable)55 b(facilities)152 b(.)83 b(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)180 b(91)2109 7804 y(8.1.1)190 b(Sc)-5 b(heme)56
b(structures)145 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(91)2109
8005 y(8.1.2)190 b(C)55 b(naming)i(con)-5 b(v)g(en)g(tions)115
b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)180 b(92)2109 8206 y(8.1.3)190 b(Garbage)56
b(collection)113 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(92)1727
8406 y(8.2)170 b(Shared)56 b(bindings)g(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)180 b(92)2109 8607 y(8.2.1)190 b(Exp)5 b(orting)55
b(Sc)-5 b(heme)56 b(v)-9 b(alues)55 b(to)g(C)167 b(.)83
b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(92)2109 8808 y(8.2.2)190 b(Exp)5 b(orting)55 b(C)g(v)-9
b(alues)56 b(to)f(Sc)-5 b(heme)167 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(93)2109 9009 y(8.2.3)190
b(Complete)55 b(shared)h(binding)h(in)-5 b(terface)131
b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(93)1727 9209 y(8.3)170 b(Calling)56 b(C)f(functions)h(from)f(Sc)-5
b(heme)116 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)180 b(94)1727 9410 y(8.4)170 b(Dynamic)55
b(loading)119 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(94)1727 9611 y(8.5)170 b(Accessing)55 b(Sc)-5 b(heme)56
b(data)g(from)f(C)142 b(.)83 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(96)2109 9812 y(8.5.1)190
b(Constan)-5 b(ts)91 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180
b(96)2109 10012 y(8.5.2)190 b(Con)-5 b(v)g(erting)56
b(v)-9 b(alues)169 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)180 b(96)4275
10511 y(vi)p eop end
%%Page: 7 7
TeXDict begin 7 6 bop 1212 1046 a Fp(8.5.3)190 b(C)56
b(v)-5 b(ersions)56 b(of)f(Sc)-5 b(heme)56 b(pro)5 b(cedures)126
b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180
b(98)830 1245 y(8.6)170 b(Calling)56 b(Sc)-5 b(heme)56
b(functions)g(from)f(C)115 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)180 b(99)830 1445 y(8.7)170
b(In)-5 b(teracting)55 b(with)g(the)g(Sc)-5 b(heme)56
b(heap)61 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)97 b(100)1212 1644 y(8.7.1)190 b(Registering)56
b(ob)9 b(jects)56 b(with)f(the)g(GC)142 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)g(.)h(.)97 b(100)1212 1843 y(8.7.2)190
b(Keeping)56 b(C)f(data)h(structures)f(in)h(the)f(Sc)-5
b(heme)56 b(heap)136 b(.)83 b(.)g(.)g(.)g(.)h(.)97 b(100)1212
2042 y(8.7.3)190 b(C)56 b(co)5 b(de)55 b(and)g(heap)h(images)83
b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)97 b(101)830 2242 y(8.8)170 b(Using)56 b(Sc)-5
b(heme)56 b(records)g(in)f(C)h(co)5 b(de)48 b(.)83 b(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97
b(101)830 2441 y(8.9)170 b(Raising)57 b(exceptions)e(from)g(external)g
(co)5 b(de)134 b(.)83 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)97 b(103)830 2640 y(8.10)87 b(Unsafe)55 b(functions)h(and)g
(macros)160 b(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)97 b(103)581 3005 y Fm(9)154
b(Access)64 b(to)h(POSIX)3747 b(105)830 3205 y Fp(9.1)170
b(Pro)5 b(cess)56 b(primitiv)-5 b(es)157 b(.)83 b(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
g(.)h(.)97 b(105)1212 3404 y(9.1.1)190 b(Pro)5 b(cess)56
b(creation)f(and)h(termination)87 b(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)97 b(106)1212 3603 y(9.1.2)190 b Fl(Exec)81
b Fp(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97
b(106)830 3802 y(9.2)170 b(Signals)66 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97 b(107)1212 4002 y(9.2.1)190
b(POSIX)56 b(signals)149 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97
b(107)1212 4201 y(9.2.2)190 b(Other)56 b(signals)114
b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97 b(108)1212 4400 y(9.2.3)190
b(Sending)57 b(signals)96 b(.)83 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97
b(109)1212 4599 y(9.2.4)190 b(Receiving)56 b(signals)98
b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)97 b(109)830 4799 y(9.3)170 b(Pro)5
b(cess)56 b(en)-5 b(vironmen)g(t)107 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
97 b(110)1212 4998 y(9.3.1)190 b(Pro)5 b(cess)56 b(iden)-5
b(ti\014cation)47 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97 b(110)1212 5197
y(9.3.2)190 b(En)-5 b(vironmen)g(t)57 b(v)-9 b(ariables)93
b(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)g(.)h(.)97 b(110)830 5396 y(9.4)170 b(Users)56 b(and)g(groups)95
b(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97 b(110)830
5596 y(9.5)170 b(OS)56 b(and)g(mac)-5 b(hine)56 b(iden)-5
b(ti\014cation)57 b(.)83 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97 b(111)830 5795 y(9.6)170
b(Files)56 b(and)g(directories)139 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97
b(111)1212 5994 y(9.6.1)190 b(Directory)55 b(streams)166
b(.)83 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)g(.)g(.)h(.)97 b(112)1212 6193 y(9.6.2)190 b(W)-14
b(orking)56 b(directory)141 b(.)83 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97 b(112)1212
6393 y(9.6.3)190 b(File)56 b(creation)f(and)h(remo)-5
b(v)c(al)126 b(.)83 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)g(.)h(.)97 b(112)1212 6592 y(9.6.4)190 b(File)56
b(information)159 b(.)84 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97 b(114)1212
6791 y(9.6.5)190 b(File)56 b(mo)5 b(des)159 b(.)83 b(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)g(.)h(.)97 b(115)830 6990 y(9.7)170 b(Time)66 b(.)83
b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97
b(116)830 7190 y(9.8)170 b(I/O)43 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97 b(117)830 7389
y(9.9)170 b(Regular)56 b(expressions)47 b(.)83 b(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
(.)h(.)97 b(118)830 7588 y(9.10)87 b(C)55 b(to)g(Sc)-5
b(heme)56 b(corresp)5 b(ondence)46 b(.)83 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)97
b(119)581 7954 y Fm(10)59 b(Bibliograph)-5 b(y)4122 b(121)3355
10511 y Fp(vii)p eop end
%%Page: 8 8
TeXDict begin 8 7 bop 4229 10511 a Fp(viii)p eop end
%%Page: 1 9
TeXDict begin 1 8 bop 581 2291 a Fk(Chapter)130 b(1)581
3122 y Fn(In)-13 b(tro)13 b(duction)581 3985 y Fp(Sc)-5
b(heme)67 b(48)f(is)g(an)h(implemen)-5 b(tation)67 b(of)e(the)h(Sc)-5
b(heme)67 b(programming)g(language)g(as)f(de-)581 4184
y(scrib)5 b(ed)60 b(in)g(the)g(Revised)2204 4124 y Fj(5)2338
4184 y Fp(Rep)5 b(ort)60 b(on)g(the)f(Algorithmic)h(Language)g(Sc)-5
b(heme)60 b([6].)88 b(It)59 b(is)581 4384 y(based)i(on)g(a)f(compiler)h
(and)g(in)-5 b(terpreter)60 b(for)g(a)h(virtual)f(Sc)-5
b(heme)61 b(mac)-5 b(hine.)90 b(Sc)-5 b(heme)61 b(48)581
4583 y(tries)56 b(to)g(b)5 b(e)56 b(faithful)f(to)h(the)g(Revised)3016
4523 y Fj(5)3147 4583 y Fp(Sc)-5 b(heme)56 b(Rep)5 b(ort,)56
b(pro)-5 b(viding)57 b(neither)f(more)g(nor)581 4782
y(less)51 b(in)f(the)f(initial)h(user)g(en)-5 b(vironmen)g(t.)73
b(\(This)50 b(is)g(not)f(to)g(sa)-5 b(y)50 b(that)f(more)h(isn't)g(a)-5
b(v)c(ailable)581 4981 y(in)56 b(other)f(en)-5 b(vironmen)g(ts;)57
b(see)e(b)5 b(elo)-5 b(w.\))830 5181 y(Sc)g(heme)50 b(48)f(is)g(under)h
(con)-5 b(tin)g(ual)50 b(dev)-5 b(elopmen)g(t.)73 b(Please)49
b(rep)5 b(ort)48 b(bugs,)k(esp)5 b(ecially)48 b(in)581
5380 y(the)d(VM,)g(esp)5 b(ecially)46 b(core)f(dumps,)k(to)c(sc)-5
b(heme-48-bugs@s48.org.)74 b(Include)46 b(the)f(v)-5
b(ersion)581 5579 y(n)g(um)g(b)5 b(er)60 b(x.yy)e(from)g(the)g("W)-14
b(elcome)59 b(to)f(Sc)-5 b(heme)59 b(48)f(x.yy")g(greeting)g(message)h
(in)g(y)-5 b(our)581 5778 y(bug)72 b(rep)5 b(ort.)120
b(It)70 b(is)i(a)e(goal)i(of)e(this)i(pro)9 b(ject)70
b(to)g(pro)5 b(duce)71 b(a)g(bullet-pro)5 b(of)71 b(system;)80
b(w)-5 b(e)581 5978 y(w)g(an)g(t)61 b(no)f(bugs)i(and,)g(esp)5
b(ecially)-14 b(,)61 b(no)f(crashes.)90 b(\(There)59
b(are)h(a)h(few)e(kno)-5 b(wn)61 b(bugs,)h(listed)581
6177 y(in)56 b(the)f Fl(doc/todo.txt)i Fp(\014le)f(that)f(comes)g(with)
h(the)f(distribution.\))830 6376 y(Send)60 b(mail)f(to)f(sc)-5
b(heme-48-request@s48.org)61 b(to)e(b)5 b(e)58 b(put)h(on)g(a)g
(mailing)g(list)g(for)g(an-)581 6575 y(nouncemen)-5 b(ts,)57
b(discussion,)h(bug)d(rep)5 b(orts,)56 b(and)g(bug)f(\014xes.)830
6775 y(The)40 b(name)g(`Sc)-5 b(heme)41 b(48')e(commemorates)i(our)f
(ha)-5 b(ving)40 b(written)f(the)h(original)g(v)-5 b(ersion)581
6974 y(in)56 b(fort)-5 b(y-eigh)g(t)55 b(hours,)i(on)e(August)h(6th)f
(and)h(7th,)f(1986.)3404 10511 y(1)p eop end
%%Page: 2 10
TeXDict begin 2 9 bop 1478 2291 a Fk(Chapter)129 b(2)1478
3122 y Fn(User's)156 b(guide)1478 3985 y Fp(This)67 b(c)-5
b(hapter)66 b(details)g(Sc)-5 b(heme)67 b(48's)g(user)g(in)-5
b(terface:)95 b(its)66 b(command-line)i(argumen)-5 b(ts,)1478
4184 y(command)56 b(pro)5 b(cessor,)56 b(debugger,)g(and)g(so)g(forth.)
1478 4728 y Fi(2.1)269 b(Command)92 b(line)d(argumen)-7
b(ts)1478 5091 y Fp(A)55 b(few)f(command)j(line)f(argumen)-5
b(ts)56 b(are)f(pro)5 b(cessed)56 b(b)-5 b(y)56 b(Sc)-5
b(heme)56 b(48)f(as)h(it)f(starts)h(up.)1727 5291 y Fl(scheme48)h
Fp([)p Fl(-i)e Fo(image)12 b Fp(])57 b([)p Fl(-h)e Fo(he)-8
b(apsize)12 b Fp(])56 b([)p Fl(-a)g Fo(ar)-8 b(gument)60
b(.)25 b(.)g(.)g Fp(])1478 5623 y Fl(-i)64 b Fh(image)98
b Fp(sp)5 b(eci\014es)54 b(a)g(heap)g(image)g(\014le)f(to)h(resume.)74
b(This)54 b(defaults)g(to)f(a)h(heap)g(image)1893 5822
y(that)h(runs)i(a)f(Sc)-5 b(heme)57 b(command)g(pro)5
b(cessor.)76 b(Heap)56 b(images)g(are)g(created)f(b)-5
b(y)57 b(the)1893 6021 y Fl(,dump)f Fp(and)g Fl(,build)88
b(commands)p Fp(,)57 b(for)e(whic)-5 b(h)56 b(see)g(b)5
b(elo)-5 b(w.)1478 6340 y Fl(-h)64 b Fh(he)-10 b(apsize)99
b Fp(sp)5 b(eci\014es)48 b(ho)-5 b(w)48 b(m)-5 b(uc)g(h)49
b(space)f(should)h(b)5 b(e)47 b(reserv)-5 b(ed)48 b(for)f(allo)5
b(cation.)71 b Fo(He)-8 b(ap-)1893 6539 y(size)67 b Fp(is)54
b(in)h(w)-5 b(ords)55 b(\(where)e(one)h(w)-5 b(ord)55
b(=)f(4)g(b)-5 b(ytes\),)55 b(and)f(co)-5 b(v)g(ers)55
b(b)5 b(oth)54 b(semispaces,)1893 6738 y(only)i(one)h(of)f(whic)-5
b(h)57 b(is)g(in)g(use)g(at)f(an)-5 b(y)57 b(giv)-5 b(en)57
b(time)f(\(except)f(during)i(garbage)g(col-)1893 6938
y(lection\).)115 b(Cons)70 b(cells)g(are)f(curren)-5
b(tly)70 b(3)f(w)-5 b(ords,)74 b(so)c(if)f(y)-5 b(ou)70
b(w)-5 b(an)g(t)70 b(to)f(mak)-5 b(e)70 b(sure)1893 7137
y(y)-5 b(ou)57 b(can)g(allo)5 b(cate)56 b(a)h(million)h(cons)f(cells,)h
(y)-5 b(ou)57 b(should)h(sp)5 b(ecify)59 b Fl(-h)87 b(6000000)59
b Fp(\(ac-)1893 7336 y(tually)47 b(somewhat)h(more)g(than)g(this,)i(to)
d(accoun)-5 b(t)48 b(for)f(the)h(initial)g(heap)g(image)g(and)1893
7535 y(breathing)71 b(ro)5 b(om\).)120 b(The)70 b(default)h(heap)g
(size)g(is)g(3000000)g(w)-5 b(ords.)121 b(The)71 b(system)1893
7735 y(will)55 b(use)g(a)f(larger)h(heap)g(if)f(the)g(sp)5
b(eci\014ed)55 b(\(or)f(default\))g(size)h(is)g(less)g(than)g(the)f
(size)1893 7934 y(of)h(the)g(image)h(b)5 b(eing)55 b(resumed.)1478
8253 y Fl(-a)64 b Fh(ar)-10 b(gument)70 b(.)29 b(.)g(.)113
b Fp(is)71 b(only)g(useful)g(with)g(images)g(built)g(using)h
Fl(,build)p Fp(.)121 b(The)71 b(argu-)1893 8452 y(men)-5
b(ts)81 b(are)f(passed)h(as)g(a)f(list)h(of)f(strings)h(to)f(the)g(pro)
5 b(cedure)80 b(sp)5 b(eci\014ed)80 b(in)h(the)1893 8651
y Fl(,build)56 b Fp(command)h(as)f(for)f(example:)1893
9016 y Fl(>)87 b(\(define)i(\(f)e(a\))h(\(for-each)g(display)h(a\))e
(\(newline\))i(0\))1893 9215 y(>)e(,build)h(f)g(foo.image)1893
9415 y(>)f(,exit)1893 9614 y(\045)g(scheme48vm)i(-i)f(foo.image)g(-a)g
(mumble)g("foo)g(x")1893 9813 y(mumblefoo)h(x)1893 10012
y(\045)4301 10511 y Fp(2)p eop end
%%Page: 3 11
TeXDict begin 3 10 bop 830 1046 a Fp(The)72 b(usual)h(de\014nition)g
(of)f(the)f Fl(s48)i Fp(or)f Fl(scheme48)i Fp(command)f(is)f(actually)g
(a)g(shell)581 1245 y(script)61 b(that)f(starts)h(up)g(the)f(Sc)-5
b(heme)61 b(48)g(virtual)f(mac)-5 b(hine)61 b(with)g(a)f
Fl(-i)88 b Fo(image\014le)74 b Fp(sp)5 b(ec-)581 1445
y(ifying)59 b(the)g(dev)-5 b(elopmen)g(t)60 b(en)-5 b(vironmen)g(t)61
b(heap)e(image)h(and)g(a)f Fl(-o)88 b Fo(vm-exe)-8 b(cutable)74
b Fp(sp)5 b(ec-)581 1644 y(ifying)59 b(the)f(lo)5 b(cation)59
b(of)g(the)f(virtual-mac)-5 b(hine)60 b(executable)e(\(the)g
(executable)g(is)i(needed)581 1843 y(for)74 b(loading)g(external)f(co)5
b(de)73 b(on)h(some)g(v)-5 b(ersions)75 b(of)e(Unix;)83
b(see)74 b(section)f(8.4)h(for)f(more)581 2042 y(information\).)104
b(The)65 b(\014le)h Fl(go)f Fp(in)h(the)f(Sc)-5 b(heme)66
b(48)f(installation)h(source)g(directory)e(is)i(an)581
2242 y(example)55 b(of)h(suc)-5 b(h)56 b(a)f(shell)i(script.)581
2787 y Fi(2.2)270 b(Command)91 b(pro)7 b(cessor)581 3151
y Fp(When)52 b(y)-5 b(ou)51 b(in)-5 b(v)g(ok)g(e)52 b(the)f(default)g
(heap)h(image,)h(a)e(command)i(pro)5 b(cessor)52 b(starts)f(running.)
581 3350 y(The)40 b(command)i(pro)5 b(cessor)41 b(acts)f(as)h(b)5
b(oth)40 b(a)g(read-ev)-9 b(al-prin)k(t)41 b(lo)5 b(op,)43
b(reading)e(expressions,)581 3549 y(ev)-9 b(aluating)63
b(them,)j(and)d(prin)-5 b(ting)65 b(the)e(results,)j(and)e(as)g(an)g
(in)-5 b(teractiv)g(e)62 b(debugger)i(and)581 3748 y(data)55
b(insp)5 b(ector.)74 b(See)55 b(Chapter)h(3)f(for)g(a)g(description)i
(of)e(the)g(command)h(pro)5 b(cessor.)581 4294 y Fi(2.3)270
b(Editing)581 4657 y Fp(W)-14 b(e)70 b(recommend)h(running)h(Sc)-5
b(heme)71 b(48)f(under)h(GNU)f(Emacs)h(or)f(XEmacs)h(using)g(the)581
4857 y Fl(cmuscheme48)46 b Fp(command)f(pac)-5 b(k)c(age.)70
b(This)44 b(is)h(in)f(the)g(Sc)-5 b(heme)44 b(48)g(distribution's)i
Fl(emacs/)581 5056 y Fp(sub)5 b(directory)49 b(and)h(is)g(included)g
(in)g(XEmacs's)g Fl(scheme)g Fp(pac)-5 b(k)c(age.)72
b(It)49 b(is)h(a)f(v)-9 b(arian)k(t)49 b(of)g(the)581
5255 y Fl(cmuscheme)83 b Fp(library)-14 b(,)88 b(whic)-5
b(h)82 b(comes)g(to)f(us)h(courtesy)e(of)h(Olin)h(Shiv)-5
b(ers,)89 b(formerly)81 b(of)581 5454 y(CMU.)55 b(Y)-14
b(ou)56 b(migh)-5 b(t)56 b(w)-5 b(an)g(t)56 b(to)f(put)g(the)g(follo)-5
b(wing)56 b(in)g(y)-5 b(our)55 b(Emacs)h(init)g(\014le)f(\()p
Fl(.emacs)p Fp(\):)581 5769 y Fl(\(setq)88 b(scheme-program-name)j
("scheme48"\))581 5968 y(\(autoload)e('run-scheme)1453
6167 y("cmuscheme48")1453 6367 y("Run)f(an)f(inferior)i(Scheme)f
(process.")1453 6566 y(t\))581 6880 y Fp(The)65 b(Emacs)g(function)g
Fl(run-scheme)h Fp(can)f(then)f(b)5 b(e)65 b(used)g(to)f(start)h(a)f
(pro)5 b(cess)66 b(running)581 7080 y(the)60 b(program)i
Fl(scheme48)g Fp(in)f(a)g(new)f(bu\013er.)90 b(T)-14
b(o)61 b(mak)-5 b(e)61 b(the)f Fl(autoload)i Fp(and)f
Fl(\(require)581 7279 y(...\))73 b Fp(forms)52 b(w)-5
b(ork,)52 b(y)-5 b(ou)52 b(will)f(also)h(need)f(to)g(put)h(the)e
(directory)h(con)-5 b(taining)54 b Fl(cmuscheme)581 7478
y Fp(and)i(related)f(\014les)h(in)g(y)-5 b(our)55 b(emacs)h(load-path:)
581 7793 y Fl(\(setq)88 b(load-path)755 7992 y(\(append)h(load-path)g
('\(")p Fo(scheme-48-dir)-8 b(e)g(ctory)15 b Fl(/emacs"\)\)\))581
8306 y Fp(F)-14 b(urther)69 b(do)5 b(cumen)-5 b(tation)68
b(can)h(b)5 b(e)67 b(found)i(in)g(the)f(\014les)g Fl
(emacs/cmuscheme48.el)k Fp(and)581 8506 y Fl(emacs/comint.el)p
Fp(.)581 9051 y Fi(2.4)270 b(P)-7 b(erformance)581 9415
y Fp(If)47 b(y)-5 b(ou)47 b(w)-5 b(an)g(t)47 b(to)f(generally)h(ha)-5
b(v)g(e)47 b(y)-5 b(our)47 b(co)5 b(de)46 b(run)h(faster)g(than)g(it)f
(normally)h(w)-5 b(ould,)50 b(en)-5 b(ter)581 9614 y
Fl(inline-values)75 b Fp(mo)5 b(de)74 b(b)5 b(efore)72
b(loading)i(an)-5 b(ything.)127 b(Otherwise)73 b(calls)h(to)f(primitiv)
-5 b(es)581 9813 y(\(lik)g(e)70 b Fl(+)h Fp(and)g Fl(cons)p
Fp(\))g(and)g(in-line)g(pro)5 b(cedures)71 b(\(lik)-5
b(e)71 b Fl(not)g Fp(and)g Fl(cadr)p Fp(\))f(w)-5 b(on't)71
b(b)5 b(e)70 b(op)5 b(en-)581 10012 y(co)g(ded,)55 b(and)h(programs)h
(will)e(run)h(more)g(slo)-5 b(wly)-14 b(.)3404 10511
y(3)p eop end
%%Page: 4 12
TeXDict begin 4 11 bop 1727 1046 a Fp(The)70 b(system)h(do)5
b(esn't)70 b(start)g(in)g Fl(inline-values)j Fp(mo)5
b(de)70 b(b)-5 b(y)71 b(default)e(b)5 b(ecause)71 b(the)1478
1245 y(Sc)-5 b(heme)79 b(rep)5 b(ort)78 b(p)5 b(ermits)79
b(rede\014nitions)h(of)e(built-in)i(pro)5 b(cedures.)144
b(With)78 b(this)h(mo)5 b(de)1478 1445 y(set,)70 b(suc)-5
b(h)69 b(rede\014nitions)f(don't)g(w)-5 b(ork)67 b(according)h(to)f
(the)g(rep)5 b(ort,)70 b(b)5 b(ecause)67 b(previously)1478
1644 y(compiled)f(calls)f(ma)-5 b(y)66 b(ha)-5 b(v)g(e)65
b(in-lined)i(the)d(old)i(de\014nition,)i(lea)-5 b(ving)65
b(no)h(opp)5 b(ortunit)-5 b(y)65 b(to)1478 1843 y(call)55
b(the)g(new)g(de\014nition.)1727 2045 y Fl(Inline-values)85
b Fp(mo)5 b(de)83 b(is)g(con)-5 b(trolled)83 b(b)-5 b(y)83
b(the)g Fl(inline-values)i Fp(switc)-5 b(h.)157 b Fl(,set)1478
2244 y(inline-values)57 b Fp(and)f Fl(,unset)88 b(inline-values)58
b Fp(turn)d(it)h(on)f(and)h(o\013.)1478 2808 y Fi(2.5)269
b(Disassem)-7 b(bler)1478 3177 y Fp(The)55 b Fl(,dis)h
Fp(command)h(prin)-5 b(ts)56 b(out)f(the)g(disassem)-5
b(bled)58 b(b)-5 b(yte)55 b(co)5 b(des)56 b(of)f(a)g(pro)5
b(cedure.)1478 3520 y Fl(>)87 b(,dis)h(cons)1478 3719
y(cons)1652 3919 y(0)f(\(protocol)i(2\))1652 4118 y(2)e(\(pop\))1652
4317 y(3)g(\(make-stored-object)k(2)c(pair\))1652 4516
y(6)g(\(return\))1478 4716 y(>)1478 5056 y Fp(The)49
b(curren)-5 b(t)49 b(b)-5 b(yte)49 b(co)5 b(des)49 b(are)g(listed)g(in)
g(the)g(\014le)g Fl(scheme/vm/arch.scm)p Fp(.)75 b(A)49
b(somewhat)1478 5255 y(out-of-date)55 b(description)h(of)f(them)h(can)f
(b)5 b(e)55 b(found)h(in)g([5].)1727 5457 y(The)e(command)h(argumen)-5
b(t)55 b(is)g(optional;)g(if)f(unsupplied)i(it)d(defaults)i(to)e(the)h
(curren)-5 b(t)1478 5657 y(fo)5 b(cus)55 b(ob)9 b(ject)55
b(\()p Fl(##)p Fp(\).)1727 5859 y(The)g(disassem)-5 b(bler)58
b(can)e(also)g(b)5 b(e)55 b(in)-5 b(v)g(ok)g(ed)56 b(on)f(con)-5
b(tin)g(uations)57 b(and)f(templates.)1478 6422 y Fi(2.6)269
b(Mo)7 b(dule)92 b(system)1478 6791 y Fp(This)66 b(section)f(giv)-5
b(es)66 b(a)f(brief)g(description)h(of)f(mo)5 b(dules)66
b(and)g(related)f(en)-5 b(tities.)103 b(F)-14 b(or)66
b(de-)1478 6990 y(tailed)40 b(information,)j(including)e(a)f
(description)h(of)e(the)h(mo)5 b(dule)40 b(con\014guration)h(language,)
1478 7190 y(see)55 b(c)-5 b(hapter)56 b(4.)1727 7392
y(A)77 b Fo(mo)-8 b(dule)77 b Fp(is)i(an)f(isolated)g(namespace,)84
b(with)77 b(visibilit)-5 b(y)78 b(of)g(bindings)h(con)-5
b(trolled)1478 7591 y(b)g(y)61 b(mo)5 b(dule)62 b(descriptions)g
(written)f(in)g(a)g(sp)5 b(ecial)62 b(con\014guration)f(language.)92
b(A)61 b(mo)5 b(dule)1478 7790 y(ma)-5 b(y)63 b(b)5 b(e)63
b(instan)-5 b(tiated)63 b(as)g(a)g Fo(p)-8 b(ackage)p
Fp(,)66 b(whic)-5 b(h)64 b(is)f(an)g(en)-5 b(vironmen)g(t)64
b(in)f(whic)-5 b(h)64 b(co)5 b(de)62 b(can)1478 7989
y(b)5 b(e)66 b(ev)-9 b(aluated.)106 b(Most)66 b(mo)5
b(dules)67 b(are)f(instan)-5 b(tiated)67 b(only)f(once)g(and)h(so)g(ha)
-5 b(v)g(e)67 b(a)f(unique)1478 8189 y(pac)-5 b(k)c(age.)101
b(A)64 b Fo(structur)-8 b(e)66 b Fp(is)f(a)g(subset)g(of)g(the)f
(bindings)i(in)f(a)g(pac)-5 b(k)c(age.)102 b(Only)64
b(b)-5 b(y)65 b(b)5 b(eing)1478 8388 y(included)76 b(in)f(a)g
(structure)g(can)g(a)g(binding)i(b)5 b(e)74 b(made)i(visible)f(in)h
(other)f(pac)-5 b(k)c(ages.)133 b(A)1478 8587 y(structure)47
b(has)h(t)-5 b(w)g(o)48 b(parts,)h(the)e(pac)-5 b(k)c(age)47
b(whose)h(bindings)h(are)e(b)5 b(eing)48 b(exp)5 b(orted)46
b(and)i(the)1478 8786 y(set)59 b(of)h(names)g(that)f(are)h(to)f(b)5
b(e)59 b(exp)5 b(orted.)86 b(This)61 b(set)e(of)h(names)g(is)h(called)e
(an)h Fo(interfac)-8 b(e)p Fp(.)1478 8986 y(A)55 b(mo)5
b(dule)55 b(then)h(has)g(three)f(parts:)1727 9326 y Fg(\017)83
b Fp(a)55 b(set)g(of)h(structures)f(whose)h(bindings)h(are)e(to)g(b)5
b(e)55 b(visible)h(within)g(the)f(mo)5 b(dule)1727 9669
y Fg(\017)83 b Fp(the)55 b(source)h(co)5 b(de)54 b(to)h(b)5
b(e)55 b(ev)-9 b(aluated)55 b(within)h(the)f(mo)5 b(dule)1727
10012 y Fg(\017)83 b Fp(a)55 b(set)g(of)h(exp)5 b(orted)54
b(in)-5 b(terfaces)4301 10511 y(4)p eop end
%%Page: 5 13
TeXDict begin 5 12 bop 581 1046 a Fp(Instan)-5 b(tiating)52
b(a)g(mo)5 b(dule)52 b(pro)5 b(duces)52 b(a)g(pac)-5
b(k)c(age)51 b(and)h(a)g(set)f(of)h(structures,)g(one)g(for)f(eac)-5
b(h)581 1245 y(of)55 b(the)g(exp)5 b(orted)55 b(in)-5
b(terfaces.)830 1460 y(The)52 b(follo)-5 b(wing)53 b(example)f(uses)i
Fl(define-structure)h Fp(to)c(create)g(a)i(mo)5 b(dule)52
b(that)g(im-)581 1660 y(plemen)-5 b(ts)53 b(simple)h(cells)e(as)h
(pairs,)h(instan)-5 b(tiates)53 b(this)f(mo)5 b(dule,)54
b(and)f(binds)g(the)f(resulting)581 1859 y(structure)61
b(to)g Fl(cells)p Fp(.)93 b(The)62 b(syn)-5 b(tax)61
b Fl(\(export)88 b Fo(name)66 b(.)25 b(.)g(.)g Fl(\))93
b Fp(creates)61 b(an)g(in)-5 b(terface)61 b(con-)581
2058 y(taining)67 b Fo(name)i(.)25 b(.)g(.)g Fp(.)102
b(The)65 b Fl(open)g Fp(clause)g(lists)h(structures)e(whose)h(bindings)
i(are)d(visible)581 2257 y(within)56 b(the)f(mo)5 b(dule.)74
b(The)55 b Fl(begin)i Fp(clause)e(con)-5 b(tains)57 b(source)e(co)5
b(de.)581 2653 y Fl(\(define-structure)90 b(cells)e(\(export)h
(make-cell)3371 2852 y(cell-ref)3371 3051 y(cell-set!\))755
3251 y(\(open)g(scheme\))755 3450 y(\(begin)g(\(define)f(\(make-cell)h
(x\))1540 3649 y(\(cons)f('cell)g(x\)\))1366 3848 y(\(define)g
(cell-ref)h(cdr\))1366 4048 y(\(define)f(cell-set!)h(set-cdr!\)\)\))830
4427 y Fp(Cells)64 b(could)g(also)h(ha)-5 b(v)g(e)64
b(b)5 b(een)63 b(implemen)-5 b(ted)65 b(using)f(the)g(record)f(facilit)
-5 b(y)63 b(describ)5 b(ed)581 4626 y(in)56 b(section)f(5.9)h(and)g(a)
-5 b(v)c(ailable)55 b(in)h(structure)f Fl(define-record-type)p
Fp(.)581 5022 y Fl(\(define-structure)90 b(cells)e(\(export)h
(make-cell)3371 5221 y(cell-ref)3371 5420 y(cell-set!\))755
5619 y(\(open)g(scheme)f(define-record-types\))755 5819
y(\(begin)h(\(define-record-type)h(cell)e(:cell)1540
6018 y(\(make-cell)h(value\))1540 6217 y(cell?)1540 6416
y(\(value)f(cell-ref)h(cell-set!\)\)\)\))830 6796 y Fp(With)58
b(either)f(de\014nition)h(the)g(resulting)g(structure)g(can)f(b)5
b(e)58 b(used)g(in)g(other)g(mo)5 b(dules)581 6995 y(b)-5
b(y)56 b(including)j Fl(cells)d Fp(in)g(an)f Fl(open)h
Fp(clause.)830 7210 y(The)65 b(command)g(in)-5 b(terpreter)65
b(is)g(alw)-5 b(a)g(ys)65 b(op)5 b(erating)65 b(within)f(a)h
(particular)g(pac)-5 b(k)c(age.)581 7410 y(Initially)59
b(this)h(is)g(a)f(pac)-5 b(k)c(age)59 b(in)g(whic)-5
b(h)60 b(only)f(the)g(standard)h(Sc)-5 b(heme)60 b(bindings)h(are)e
(vis-)581 7609 y(ible.)88 b(The)60 b(bindings)i(of)e(other)g
(structures)g(can)g(b)5 b(e)60 b(made)g(visible)h(b)-5
b(y)60 b(using)h(the)f Fl(,open)581 7808 y Fp(command)d(describ)5
b(ed)55 b(in)h(section)f(3.4)h(b)5 b(elo)-5 b(w.)830
8023 y(Note)63 b(that)f(this)i(initial)g(pac)-5 b(k)c(age)63
b(do)5 b(es)64 b(not)f(include)h(the)f(con\014guration)h(language.)581
8222 y(Mo)5 b(dule)58 b(co)5 b(de)56 b(needs)i(to)f(b)5
b(e)56 b(ev)-9 b(aluated)57 b(in)g(the)g(con\014guration)h(pac)-5
b(k)c(age,)57 b(whic)-5 b(h)58 b(can)f(b)5 b(e)581 8422
y(done)56 b(b)-5 b(y)55 b(using)i(the)e Fl(,)p Fp(con\014g)h(command:)
581 8817 y Fl(>)87 b(,config)i(\(define-structure)h(cells)e(...\))581
9016 y(>)f(,open)i(cells)581 9215 y(>)e(\(make-cell)i(4\))581
9415 y('\(cell)f(.)g(4\))581 9614 y(>)f(\(define)i(c)e(\(make-cell)i
(4\)\))581 9813 y(>)e(\(cell-ref)i(c\))581 10012 y(4)3404
10511 y Fp(5)p eop end
%%Page: 6 14
TeXDict begin 6 13 bop 1478 1046 a Fi(2.7)269 b(Library)1478
1410 y Fp(A)62 b(n)-5 b(um)g(b)5 b(er)65 b(of)e(useful)g(utilities)h
(are)f(either)f(built)i(in)f(to)g(Sc)-5 b(heme)64 b(48)f(or)g(can)g(b)5
b(e)63 b(loaded)1478 1609 y(from)53 b(an)g(external)g(library)-14
b(.)73 b(These)54 b(utilities)f(are)g(not)g(visible)h(in)f(the)g(user)g
(en)-5 b(vironmen)g(t)1478 1808 y(b)g(y)63 b(default,)h(but)f(can)g(b)5
b(e)62 b(made)h(a)-5 b(v)c(ailable)63 b(with)g(the)f
Fl(open)i Fp(command.)97 b(F)-14 b(or)63 b(example,)1478
2008 y(to)55 b(use)h(the)f Fl(tables)h Fp(structure,)f(do)1478
2340 y Fl(>)87 b(,open)h(tables)1478 2539 y(>)1727 2871
y Fp(If)44 b(the)f(utilit)-5 b(y)44 b(is)h(not)f(already)g(loaded,)j
(then)d(the)g Fl(,open)h Fp(command)g(will)g(load)f(it.)70
b(Or,)1478 3070 y(y)-5 b(ou)49 b(can)g(load)g(something)h(explicitly)e
(\(without)g(op)5 b(ening)49 b(it\))f(using)i(the)e Fl(load-package)
1478 3269 y Fp(command:)1478 3602 y Fl(>)87 b(,load-package)j(queues)
1478 3801 y(>)d(,open)h(queues)1727 4133 y Fp(When)51
b(loading)h(a)f(utilit)-5 b(y)-14 b(,)52 b(the)f(message)h("Note:)71
b(optional)51 b(optimizer)g(not)g(in)-5 b(v)g(ok)g(ed")1478
4332 y(is)56 b(inno)5 b(cuous.)75 b(F)-14 b(eel)55 b(free)g(to)g
(ignore)h(it.)1727 4531 y(See)f(also)h(the)f(pac)-5 b(k)c(age)55
b(system)h(do)5 b(cumen)-5 b(tation,)56 b(in)f(c)-5 b(hapter)56
b(4.)1727 4731 y(Not)49 b(all)i(of)f(the)g(the)g(libraries)i(a)-5
b(v)c(ailable)50 b(in)h(Sc)-5 b(heme)51 b(48)g(are)f(describ)5
b(ed)51 b(in)f(this)h(man-)1478 4930 y(ual.)68 b(All)37
b(are)f(listed)i(in)f(\014les)g Fl(rts-packages.scm)p
Fp(,)44 b Fl(comp-packages.scm)p Fp(,)g Fl(env-packages.scm)p
Fp(,)1478 5129 y(and)68 b Fl(more-packages.scm)i Fp(in)e(the)f
Fl(scheme)h Fp(directory)f(of)g(the)g(distribution,)72
b(and)c(the)1478 5328 y(bindings)56 b(they)e(exp)5 b(ort)54
b(are)g(listed)h(in)g Fl(interfaces.scm)i Fp(and)e Fl
(more-interfaces.scm)1478 5528 y Fp(in)h(the)e(same)j(directory)-14
b(.)4301 10511 y(6)p eop end
%%Page: 7 15
TeXDict begin 7 14 bop 581 2291 a Fk(Chapter)130 b(3)581
3122 y Fn(Command)156 b(pro)13 b(cessor)581 3985 y Fp(This)57
b(c)-5 b(hapter)57 b(details)g(Sc)-5 b(heme)57 b(48's)g(command)h(pro)5
b(cessor,)57 b(whic)-5 b(h)57 b(incorp)5 b(orates)57
b(b)5 b(oth)581 4184 y(a)62 b(read-ev)-9 b(al-prin)k(t)63
b(lo)5 b(op)62 b(and)h(an)f(in)-5 b(teractiv)g(e)61 b(debugger.)95
b(A)-5 b(t)61 b(the)h Fl(>)g Fp(prompt,)i(y)-5 b(ou)63
b(can)581 4384 y(t)-5 b(yp)5 b(e)62 b(either)h(a)g(Sc)-5
b(heme)63 b(form)g(\(expression)h(or)f(de\014nition\))g(or)g(a)g
(command)h(b)5 b(eginning)581 4583 y(with)64 b(a)g(comma.)101
b(In)64 b(insp)5 b(ection)64 b(mo)5 b(de)64 b(\(see)g(section)g(3.7\))g
(the)f(prompt)i(c)-5 b(hanges)65 b(to)e Fl(:)581 4782
y Fp(and)43 b(commands)g(no)g(longer)f(need)g(to)g(b)5
b(e)42 b(preceded)g(b)-5 b(y)42 b(a)g(comma;)47 b(input)c(b)5
b(eginning)43 b(with)581 4981 y(a)57 b(letter)e(or)i(digit)g(is)g
(assumed)h(to)e(b)5 b(e)57 b(a)f(command,)j(not)d(an)h(expression.)79
b(In)56 b(insp)5 b(ection)581 5181 y(mo)g(de)65 b(the)f(command)i(pro)5
b(cessor)66 b(prin)-5 b(ts)66 b(out)e(a)h(men)-5 b(u)66
b(of)f(selectable)f(comp)5 b(onen)-5 b(ts)66 b(for)581
5380 y(the)55 b(curren)-5 b(t)56 b(ob)9 b(ject)54 b(of)h(in)-5
b(terest.)581 5929 y Fi(3.1)270 b(Curren)-7 b(t)89 b(fo)7
b(cus)91 b(v)-15 b(alue)90 b(and)g Ff(##)581 6293 y Fp(The)77
b(command)h(pro)5 b(cessor)78 b(k)-5 b(eeps)77 b(trac)-5
b(k)77 b(of)f(a)h(curren)-5 b(t)78 b Fo(fo)-8 b(cus)79
b(value)p Fp(.)140 b(This)77 b(v)-9 b(alue)77 b(is)581
6492 y(normally)48 b(the)f(last)g(v)-9 b(alue)47 b(returned)g(b)-5
b(y)48 b(a)f(command.)72 b(If)47 b(a)h(command)g(returns)g(m)-5
b(ultiple)581 6691 y(v)c(alues)65 b(the)f(fo)5 b(cus)65
b(ob)9 b(ject)64 b(is)h(a)g(list)g(of)g(the)f(v)-9 b(alues.)102
b(The)65 b(fo)5 b(cus)65 b(v)-9 b(alue)64 b(is)h(not)g(c)-5
b(hanged)581 6891 y(if)54 b(a)g(command)h(returns)g(no)f(v)-9
b(alues)54 b(or)g(a)g(distinguished)i(`unsp)5 b(eci\014c')55
b(v)-9 b(alue.)73 b(Examples)581 7090 y(of)54 b(forms)h(that)e(return)h
(this)g(unsp)5 b(eci\014c)55 b(v)-9 b(alue)54 b(are)f(de\014nitions,)j
(uses)f(of)67 b Fl(set!)p Fp(,)55 b(and)f Fl(\(if)581
7289 y(#f)88 b(0\))p Fp(.)74 b(It)55 b(prin)-5 b(ts)56
b(as)g Fl(#)p Fg(f)p Fl(Unspecific)p Fg(g)p Fp(.)830
7488 y(The)c(reader)g(used)h(b)-5 b(y)52 b(the)f(command)i(pro)5
b(cessor)53 b(reads)f Fl(##)g Fp(as)h(a)f(sp)5 b(ecial)52
b(expression)581 7688 y(that)j(ev)-9 b(aluates)55 b(to)g(the)g(curren)
-5 b(t)55 b(fo)5 b(cus)55 b(ob)9 b(ject.)581 8020 y Fl(>)87
b(\(list)i('a)e('b\))581 8219 y('\(a)h(b\))581 8418 y(>)f(\(car)h(##\))
581 8618 y('a)581 8817 y(>)f(\(symbol->string)j(##\))581
9016 y("a")581 9215 y(>)d(\(if)h(#f)g(0\))581 9415 y(#)p
Fg(f)p Fl(Unspecific)p Fg(g)581 9614 y Fl(>)f(##)581
9813 y("a")581 10012 y(>)3404 10511 y Fp(7)p eop end
%%Page: 8 16
TeXDict begin 8 15 bop 1478 1046 a Fi(3.2)269 b(Command)92
b(lev)-7 b(els)1478 1435 y Fp(If)58 b(an)h(error,)h(k)-5
b(eyb)5 b(oard)58 b(in)-5 b(terrupt,)60 b(or)f(other)f(breakp)5
b(oin)-5 b(t)59 b(o)5 b(ccurs,)59 b(or)g(the)f Fl(,push)i
Fp(com-)1478 1634 y(mand)71 b(is)g(used,)j(the)c(command)h(pro)5
b(cessor)71 b(in)-5 b(v)g(ok)g(es)71 b(a)f(recursiv)-5
b(e)71 b(cop)-5 b(y)70 b(of)g(itself,)k(pre-)1478 1834
y(serving)66 b(the)g(dynamic)g(state)g(of)g(the)f(program)i(when)f(the)
g(breakp)5 b(oin)-5 b(t)66 b(o)5 b(ccured.)105 b(The)1478
2033 y(recursiv)-5 b(e)67 b(in)-5 b(v)g(o)5 b(cation)67
b(creates)g(a)g(new)g Fo(c)-8 b(ommand)69 b(level)p Fp(.)111
b(The)67 b(command)h(lev)-5 b(els)67 b(form)1478 2232
y(a)61 b(stac)-5 b(k)61 b(with)g(the)f(curren)-5 b(t)61
b(lev)-5 b(el)61 b(at)g(the)f(top.)91 b(The)61 b(command)h(prompt)f
(indicates)h(the)1478 2431 y(n)-5 b(um)g(b)5 b(er)62
b(of)g(stopp)5 b(ed)61 b(lev)-5 b(els)62 b(b)5 b(elo)-5
b(w)61 b(the)g(curren)-5 b(t)62 b(one:)86 b Fl(>)61 b
Fp(or)h Fl(:)86 b Fp(for)61 b(the)g(base)h(lev)-5 b(el)61
b(and)1478 2631 y Fo(n)13 b Fl(>)54 b Fp(or)f Fo(n)13
b Fl(:)73 b Fp(for)54 b(all)g(other)f(lev)-5 b(els,)54
b(where)g Fo(n)66 b Fp(is)55 b(the)e(command-lev)-5 b(el)55
b(nesting)f(depth.)73 b(The)1478 2830 y Fl(levels)65
b Fp(setting)f(describ)5 b(ed)65 b(b)5 b(elo)-5 b(w)65
b(can)f(b)5 b(e)64 b(used)h(to)f(disable)i(the)e(automatic)g(pushing)
1478 3029 y(of)55 b(new)g(lev)-5 b(els.)1727 3242 y(The)64
b(command)i(pro)5 b(cessor's)66 b(ev)-9 b(aluation)64
b(pac)-5 b(k)c(age)64 b(and)h(the)g(v)-9 b(alue)64 b(of)g(the)g(curren)
-5 b(t)1478 3441 y(fo)5 b(cus)63 b(v)-9 b(alue)64 b(are)f(lo)5
b(cal)64 b(to)f(eac)-5 b(h)64 b(command)h(lev)-5 b(el.)99
b(They)63 b(are)h(preserv)-5 b(ed)64 b(when)g(a)f(new)1478
3641 y(lev)-5 b(el)78 b(is)g(pushed)h(and)f(restored)g(when)g(it)g(is)g
(discarded.)143 b(The)78 b(settings)g(of)g(all)g(other)1478
3840 y(settings)55 b(are)h(shared)g(b)-5 b(y)55 b(all)h(command)h(lev)
-5 b(els.)1561 4260 y Fg(h)p Fp(eof)p Fg(i)1893 4459
y Fp(Discards)54 b(the)f(curren)-5 b(t)53 b(command)h(lev)-5
b(el)53 b(and)h(resumes)g(running)h(the)d(lev)-5 b(el)53
b(do)-5 b(wn.)1893 4658 y Fg(h)p Fp(eof)p Fg(i)61 b Fp(is)j(usually)f
(con)-5 b(trol-)p Fl(D)64 b Fp(at)e(a)h(Unix)f(shell)h(or)g(con)-5
b(trol-)p Fl(C)63 b Fp(con)-5 b(trol-)p Fl(D)64 b Fp(using)g(the)1893
4858 y(Emacs)56 b Fl(cmuscheme48)h Fp(library)-14 b(.)1561
5244 y Fl(,pop)1893 5444 y Fp(The)55 b(same)h(as)g Fg(h)p
Fp(eof)p Fg(i)p Fp(.)1561 5830 y Fl(,proceed)88 b([)p
Fo(exp)98 b Fl(...)p Fp(])1893 6030 y(Pro)5 b(ceed)78
b(after)g(an)h(in)-5 b(terrupt)80 b(or)f(error,)84 b(resuming)d(the)d
(next)g(command)i(lev)-5 b(el)1893 6229 y(do)g(wn,)84
b(deliv)-5 b(ering)78 b(the)e(v)-9 b(alues)78 b(of)90
b Fo(exp)80 b(.)25 b(.)g(.)166 b Fp(to)76 b(the)h(con)-5
b(tin)g(uation.)141 b(In)-5 b(terrupt)1893 6428 y(con)g(tin)g(uations)
64 b(discard)f(an)-5 b(y)62 b(returned)g(v)-9 b(alues.)95
b Fl(,Pop)63 b Fp(and)f Fl(,proceed)i Fp(ha)-5 b(v)g(e)63
b(the)1893 6627 y(same)40 b(e\013ect)f(after)g(an)h(in)-5
b(terrupt)40 b(but)g(b)5 b(eha)-5 b(v)g(e)40 b(di\013eren)-5
b(tly)40 b(after)f(errors.)69 b Fl(,Proceed)1893 6827
y Fp(restarts)76 b(the)f(erroneous)i(computation)f(from)g(the)f(p)5
b(oin)-5 b(t)77 b(where)e(the)h(error)g(o)5 b(c-)1893
7026 y(curred)72 b(\(although)g(not)f(all)h(errors)g(are)g(pro)5
b(ceedable\))71 b(while)h Fl(,pop)g Fp(\(and)g Fg(h)p
Fp(eof)p Fg(i)p Fp(\))1893 7225 y(discards)57 b(it)e(and)h(prompts)g
(for)f(a)g(new)h(command.)1561 7612 y Fl(,push)1893 7811
y Fp(Pushes)62 b(a)g(new)f(command)h(lev)-5 b(el)62 b(on)f(ab)5
b(o)-5 b(v)g(e)61 b(the)g(curren)-5 b(t)62 b(one.)92
b(This)62 b(is)g(useful)f(if)1893 8010 y(the)48 b Fl(levels)h
Fp(setting)f(has)h(b)5 b(een)48 b(used)h(to)f(disable)h(the)f
(automatic)g(pushing)i(of)e(new)1893 8210 y(lev)-5 b(els)56
b(for)f(errors)h(and)f(in)-5 b(terrupts.)1561 8596 y
Fl(,reset)88 b([)p Fo(numb)-8 b(er)18 b Fl(])1893 8796
y Fp(P)-5 b(ops)39 b(do)-5 b(wn)39 b(to)e(a)h(giv)-5
b(en)39 b(lev)-5 b(el)37 b(and)i(restarts)f(that)f(lev)-5
b(el.)68 b Fo(Numb)-8 b(er)57 b Fp(defaults)38 b(to)g(zero,)1893
8995 y Fl(,reset)56 b Fp(restarts)g(the)f(command)h(pro)5
b(cessor,)56 b(discarding)h(all)e(existing)h(lev)-5 b(els.)1727
9415 y(Whenev)g(er)48 b(mo)-5 b(ving)49 b(to)e(an)i(existing)f(lev)-5
b(el,)50 b(either)d(b)-5 b(y)49 b(sending)g(an)g Fg(h)p
Fp(eof)p Fg(i)d Fp(or)j(b)-5 b(y)48 b(using)1478 9614
y Fl(,reset)68 b Fp(or)f(the)f(other)h(commands)h(listed)f(ab)5
b(o)-5 b(v)g(e,)70 b(the)d(command)h(pro)5 b(cessor)67
b(runs)h(all)1478 9813 y(of)52 b(the)h Fl(dynamic-wind)i
Fp(\\after")d(th)-5 b(unks)53 b(b)5 b(elonging)54 b(to)e(stopp)5
b(ed)53 b(computations)h(on)f(the)1478 10012 y(discarded)j(lev)-5
b(el\(s\).)4301 10511 y(8)p eop end
%%Page: 9 17
TeXDict begin 9 16 bop 581 1046 a Fi(3.3)270 b(Logistical)88
b(commands)664 1411 y Fl(,load)g Fo(\014lename)61 b(.)25
b(.)g(.)996 1611 y Fp(Loads)38 b(the)e(named)i(Sc)-5
b(heme)37 b(source)h(\014le\(s\).)67 b(Easier)38 b(to)e(t)-5
b(yp)5 b(e)36 b(than)h Fl(\(load)88 b(")p Fo(\014lename)12
b Fl("\))996 1810 y Fp(b)5 b(ecause)63 b(y)-5 b(ou)63
b(don't)h(ha)-5 b(v)g(e)63 b(to)f(shift)i(to)e(t)-5 b(yp)5
b(e)62 b(the)h(paren)-5 b(theses)64 b(or)f(quote)f(marks.)996
2009 y(\(Ho)-5 b(w)g(ev)g(er,)44 b(it)e(is)g(still)g(p)5
b(ossible)43 b(to)f(sp)5 b(ecify)41 b(a)h(\014lename)g(as)g(a)g(Sc)-5
b(heme)42 b(string)h(literal,)996 2208 y(with)60 b(quote)e(marks|y)-5
b(ou'll)61 b(need)e(this)h(for)f(\014lenames)i(con)-5
b(taining)60 b(whitespace.\))996 2408 y(Also,)52 b(it)e(w)-5
b(orks)51 b(in)g(an)-5 b(y)50 b(pac)-5 b(k)c(age,)52
b(unlik)-5 b(e)51 b Fl(\(load)88 b(")p Fo(\014lename)12
b Fl("\))p Fp(,)54 b(whic)-5 b(h)51 b(will)g(w)-5 b(ork)996
2607 y(only)50 b(w)-5 b(ork)50 b(in)g(pac)-5 b(k)c(ages)50
b(in)g(whic)-5 b(h)50 b(the)g(v)-9 b(ariable)49 b Fl(load)i
Fp(is)f(de\014ned)g(appropriately)-14 b(.)664 2943 y
Fl(,exit)88 b([)p Fo(exp)10 b Fl(])38 b Fp(Exits)f(bac)-5
b(k)37 b(out)g(to)f(shell)i(\(or)e(executiv)-5 b(e)36
b(or)h(whatev)-5 b(er)36 b(in)-5 b(v)g(ok)g(ed)38 b(Sc)-5
b(heme)38 b(48)996 3142 y(in)63 b(the)f(\014rst)h(place\).)95
b Fo(Exp)72 b Fp(should)64 b(ev)-9 b(aluate)62 b(to)g(an)g(in)-5
b(teger.)96 b(The)62 b(in)-5 b(teger)62 b(is)h(re-)996
3341 y(turned)51 b(to)e(the)h(calling)h(program.)73 b(The)50
b(default)g(v)-9 b(alue)50 b(of)63 b Fo(exp)e Fp(is)50
b(zero,)h(whic)-5 b(h,)52 b(on)996 3540 y(Unix,)j(is)h(generally)f(in)
-5 b(terpreted)56 b(as)f(success.)581 4094 y Fi(3.4)270
b(Mo)7 b(dule)91 b(commands)581 4459 y Fp(There)55 b(are)g(man)-5
b(y)56 b(commands)h(related)e(to)g(mo)5 b(dules.)75 b(Only)55
b(the)g(most)h(commonly)g(used)581 4659 y(mo)5 b(dule)52
b(commands)i(are)e(describ)5 b(ed)52 b(here;)h(do)5 b(cumen)-5
b(tation)52 b(for)g(the)f(rest)h(can)g(b)5 b(e)51 b(found)581
4858 y(in)78 b(section)f(4.8.)140 b(There)77 b(is)h(also)g(a)g(brief)f
(description)h(of)f(mo)5 b(dules,)84 b(structures,)f(and)581
5057 y(pac)-5 b(k)c(ages)56 b(in)f(section)h(2.6)f(b)5
b(elo)-5 b(w.)664 5426 y Fl(,open)88 b Fo(structur)-8
b(e)60 b(.)25 b(.)g(.)996 5625 y Fp(Mak)-5 b(es)61 b(the)e(bindings)i
(in)g(the)e Fo(structur)-8 b(e)12 b Fp(s)61 b(visible)g(in)f(the)f
(curren)-5 b(t)60 b(pac)-5 b(k)c(age.)87 b(The)996 5825
y(pac)-5 b(k)c(ages)63 b(asso)5 b(ciated)62 b(with)h(the)e
Fo(structur)-8 b(e)12 b Fp(s)65 b(will)d(b)5 b(e)62 b(loaded)h(if)f
(this)h(has)g(not)f(al-)996 6024 y(ready)71 b(b)5 b(een)70
b(done)h(\(the)f Fl(ask-before-loading)k Fp(setting)d(can)g(b)5
b(e)70 b(used)i(disable)996 6223 y(the)55 b(automatic)g(loading)h(of)g
(pac)-5 b(k)c(ages\).)664 6559 y Fl(,config)89 b([)p
Fo(c)-8 b(ommand)17 b Fl(])996 6758 y Fp(Executes)77
b Fo(c)-8 b(ommand)94 b Fp(in)77 b(the)g Fl(config)h
Fp(pac)-5 b(k)c(age,)83 b(whic)-5 b(h)78 b(includes)g(the)f(mo)5
b(dule)996 6957 y(con\014guration)56 b(language.)75 b(F)-14
b(or)56 b(example,)f(use)996 7359 y Fl(,config)89 b(,load)f
Fo(\014lename)996 7761 y Fp(to)59 b(load)g(a)g(\014le)g(con)-5
b(taining)60 b(mo)5 b(dule)59 b(de\014nitions.)85 b(If)59
b(no)g Fo(c)-8 b(ommand)76 b Fp(is)59 b(giv)-5 b(en,)60
b(the)996 7961 y Fl(config)d Fp(pac)-5 b(k)c(age)55 b(b)5
b(ecomes)55 b(the)g(execution)g(pac)-5 b(k)c(age)55 b(for)g(future)g
(commands.)664 8296 y Fl(,user)88 b([)p Fo(c)-8 b(ommand)17
b Fl(])996 8496 y Fp(This)52 b(is)g(similar)g(to)f(the)f
Fl(,config)p Fp(.)74 b(It)51 b(mo)-5 b(v)g(es)52 b(to)e(or)h(executes)g
(a)g(command)h(in)f(the)996 8695 y(user)g(pac)-5 b(k)c(age)49
b(\(whic)-5 b(h)50 b(is)g(the)g(default)f(pac)-5 b(k)c(age)49
b(when)h(the)g(Sc)-5 b(heme)50 b(48)g(command)996 8894
y(pro)5 b(cessor)56 b(starts\).)581 9448 y Fi(3.5)270
b(Debugging)92 b(commands)664 9813 y Fl(,preview)996
10012 y Fp(Somewhat)51 b(lik)-5 b(e)50 b(a)g(bac)-5 b(ktrace,)51
b(but)f(b)5 b(ecause)50 b(of)g(tail)g(recursion)h(y)-5
b(ou)50 b(see)h(less)g(than)3404 10511 y(9)p eop end
%%Page: 10 18
TeXDict begin 10 17 bop 1893 1046 a Fp(y)-5 b(ou)54 b(migh)-5
b(t)55 b(in)f(debuggers)h(for)f(some)g(other)g(languages.)74
b(The)54 b(stac)-5 b(k)54 b(to)f(displa)-5 b(y)56 b(is)1893
1245 y(c)-5 b(hosen)56 b(as)g(follo)-5 b(ws:)2046 1565
y(1.)83 b(If)66 b(the)f(curren)-5 b(t)66 b(fo)5 b(cus)66
b(ob)9 b(ject)65 b(is)i(a)f(con)-5 b(tin)g(uation)67
b(or)f(a)g(thread,)i(then)e(that)2258 1765 y(con)-5 b(tin)g(uation)57
b(or)e(thread's)h(stac)-5 b(k)55 b(is)h(displa)-5 b(y)g(ed.)2046
2018 y(2.)83 b(Otherwise,)68 b(if)c(the)h(curren)-5 b(t)64
b(command)i(lev)-5 b(el)65 b(w)-5 b(as)65 b(initiated)g(b)5
b(ecause)65 b(of)f(a)2258 2217 y(breakp)5 b(oin)-5 b(t)52
b(in)h(the)e(next)h(lev)-5 b(el)52 b(do)-5 b(wn,)53 b(then)f(the)g
(stac)-5 b(k)52 b(at)g(that)f(breakp)5 b(oin)-5 b(t)2258
2417 y(is)56 b(displa)-5 b(y)g(ed.)2046 2670 y(3.)83
b(Otherwise,)67 b(there)d(is)h(no)g(stac)-5 b(k)64 b(to)g(displa)-5
b(y)66 b(and)f(a)f(message)i(is)f(prin)-5 b(ted)65 b(to)2258
2870 y(that)55 b(e\013ect.)1893 3190 y(One)65 b(line)g(is)h(prin)-5
b(ted)65 b(out)g(for)f(eac)-5 b(h)65 b(con)-5 b(tin)g(uation)66
b(on)f(the)g(c)-5 b(hosen)66 b(stac)-5 b(k,)67 b(going)1893
3389 y(from)55 b(top)h(to)f(b)5 b(ottom.)1561 3709 y
Fl(,run)88 b Fo(exp)1893 3908 y Fp(Ev)-9 b(aluate)48
b Fo(exp)10 b Fp(,)52 b(prin)-5 b(ting)50 b(the)f(result\(s\))h(and)f
(making)h(them)g(\(or)f(a)g(list)h(of)f(them,)h(if)1893
4107 y Fo(exp)62 b Fp(returns)52 b(m)-5 b(ultiple)52
b(results\))g(the)f(new)g(fo)5 b(cus)52 b(ob)9 b(ject.)72
b(The)51 b Fl(,run)h Fp(command)h(is)1893 4307 y(useful)41
b(when)f(writing)g(command)h(programs,)k(whic)-5 b(h)41
b(are)f(describ)5 b(ed)40 b(in)h(section)f(3.8)1893 4506
y(b)5 b(elo)-5 b(w.)1561 4826 y Fl(,trace)88 b Fo(name)100
b Fl(...)1893 5025 y Fp(Start)56 b(tracing)h(calls)g(to)f(the)g(named)i
(pro)5 b(cedure)56 b(or)h(pro)5 b(cedures.)78 b(With)57
b(no)g(argu-)1893 5224 y(men)-5 b(ts,)47 b(displa)-5
b(ys)45 b(all)e(pro)5 b(cedures)44 b(curren)-5 b(tly)43
b(traced.)70 b(This)44 b(a\013ects)f(the)g(binding)i(of)1893
5424 y Fo(name)12 b Fp(,)48 b(not)d(the)f(b)5 b(eha)-5
b(vior)45 b(of)g(the)g(pro)5 b(cedure)45 b(that)f(is)h(its)h(curren)-5
b(t)45 b(v)-9 b(alue.)70 b Fo(Name)58 b Fp(is)1893 5623
y(rede\014ned)c(to)e(b)5 b(e)53 b(a)h(pro)5 b(cedure)53
b(that)f(prin)-5 b(ts)55 b(a)e(message,)i(calls)f(the)f(original)h(v)-9
b(alue)1893 5822 y(of)88 b Fo(name)12 b Fp(,)82 b(prin)-5
b(ts)77 b(another)e(message,)82 b(and)76 b(\014nally)g(passes)i(along)e
(the)f(v)-9 b(alue\(s\))1893 6021 y(returned)55 b(b)-5
b(y)56 b(the)f(original)h(pro)5 b(cedure.)1561 6341 y
Fl(,untrace)88 b Fo(name)100 b Fl(...)1893 6541 y Fp(Stop)60
b(tracing)f(calls)h(to)f(the)g(named)i(pro)5 b(cedure)59
b(or)h(pro)5 b(cedures.)87 b(With)59 b(no)h(argu-)1893
6740 y(men)-5 b(t,)56 b(stop)f(tracing)h(all)f(calls)h(to)f(all)h(pro)5
b(cedures.)1561 7060 y Fl(,condition)1893 7259 y Fp(The)71
b Fl(,condition)i Fp(command)f(displa)-5 b(ys)73 b(the)d(condition)i
(ob)9 b(ject)70 b(describing)j(the)1893 7458 y(error)44
b(or)g(in)-5 b(terrupt)44 b(that)g(initiated)g(the)f(curren)-5
b(t)45 b(command)g(lev)-5 b(el.)70 b(The)44 b(condition)1893
7658 y(ob)9 b(ject)80 b(b)5 b(ecomes)81 b(the)g(curren)-5
b(t)81 b(fo)5 b(cus)81 b(v)-9 b(alue.)150 b(This)82 b(is)f
(particularly)g(useful)h(in)1893 7857 y(conjunction)c(with)f(the)g
(insp)5 b(ector.)141 b(F)-14 b(or)79 b(example,)k(if)78
b(a)f(pro)5 b(cedure)78 b(is)g(passed)1893 8056 y(the)50
b(wrong)g(n)-5 b(um)g(b)5 b(er)52 b(of)e(argumen)-5 b(ts,)53
b(do)d Fl(,condition)i Fp(follo)-5 b(w)g(ed)51 b(b)-5
b(y)51 b Fl(,inspect)h Fp(to)1893 8255 y(insp)5 b(ect)55
b(the)g(pro)5 b(cedure)55 b(and)h(its)g(argumen)-5 b(ts.)1561
8575 y Fl(,bound?)88 b Fo(name)1893 8775 y Fp(Displa)-5
b(y)71 b(the)e(binding)i(of)83 b Fo(name)12 b Fp(,)75
b(if)69 b(there)h(is)g(one,)k(and)d(otherwise)f(prin)-5
b(ts)71 b(`)p Fl(Not)1893 8974 y(bound)p Fp('.)1561 9294
y Fl(,expand)88 b Fo(form)1561 9614 y Fl(,expand-all)h
Fo(form)1893 9813 y Fp(Sho)-5 b(w)58 b(macro)g(expansion)g(of)70
b Fo(form)13 b Fp(,)58 b(if)f(an)-5 b(y)-14 b(.)81 b
Fl(,expand)58 b Fp(p)5 b(erforms)58 b(a)g(single)g(macro)1893
10012 y(expansion)e(while)g Fl(,expand-all)h Fp(fully)e(expands)h(all)g
(macros)g(in)g Fo(form)13 b Fp(.)4259 10511 y(10)p eop
end
%%Page: 11 19
TeXDict begin 11 18 bop 664 1046 a Fl(,where)88 b Fo(pr)-8
b(o)g(c)g(e)g(dur)g(e)996 1245 y Fp(Displa)j(y)56 b(name)g(of)f(\014le)
h(con)-5 b(taining)58 b Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)12
b Fp('s)55 b(source)h(co)5 b(de.)581 1797 y Fi(3.6)270
b(Settings)581 2161 y Fp(There)57 b(are)f(a)h(n)-5 b(um)g(b)5
b(er)58 b(of)f(settings)g(that)f(con)-5 b(trol)57 b(the)f(b)5
b(eha)-5 b(vior)57 b(of)g(the)f(command)i(pro-)581 2360
y(cessor;)d(most)e(of)f(them)h(are)f(b)5 b(o)g(oleans.)74
b(They)52 b(can)h(b)5 b(e)52 b(set)h(using)h(the)e Fl(,set)h
Fp(and)h Fl(,unset)581 2560 y Fp(commands.)664 2926 y
Fl(,set)88 b Fo(setting)103 b Fl([on)88 b(|)f(off)h(|)f(literal)i(|)e
(?])996 3126 y Fp(This)66 b(sets)f(the)g(v)-9 b(alue)64
b(of)h(setting)i Fo(setting)15 b Fp(.)103 b(F)-14 b(or)66
b(a)f(b)5 b(o)g(olean)64 b(setting,)k(the)c(second)996
3325 y(argumen)-5 b(t)55 b(m)-5 b(ust)54 b(b)5 b(e)54
b Fl(on)g Fp(or)g Fl(off)p Fp(;)h(it)e(then)g(defaults)h(to)g
Fl(on)p Fp(.)73 b(Otherwise,)55 b(the)e(v)-9 b(alue)996
3524 y(m)k(ust)53 b(b)5 b(e)51 b(a)h(literal,)g(t)-5
b(ypically)51 b(a)h(p)5 b(osititiv)-5 b(e)51 b(n)-5 b(um)g(b)5
b(er.)74 b(If)51 b(the)h(second)g(argumen)-5 b(t)52 b(is)996
3723 y Fl(?)73 b Fp(the)52 b(v)-9 b(alue)52 b(of)65 b
Fo(setting)j Fp(is)53 b(is)g(displa)-5 b(y)g(ed)54 b(and)e(not)g(c)-5
b(hanged.)74 b(Doing)53 b Fl(,set)87 b(?)73 b Fp(will)996
3923 y(displa)-5 b(y)57 b(a)e(list)h(of)f(the)g(setting)g(and)h(their)f
(curren)-5 b(t)56 b(v)-9 b(alues.)664 4256 y Fl(,unset)88
b Fo(setting)996 4456 y Fl(,unset)g Fo(setting)72 b Fp(is)56
b(the)f(same)h(as)g Fl(,set)87 b Fo(setting)104 b Fl(off)p
Fp(.)830 4823 y(The)56 b(settings)f(are)g(as)h(follo)-5
b(ws:)664 5156 y Fl(batch)56 b Fp(\(b)5 b(o)g(olean\))996
5355 y(In)46 b(`batc)-5 b(h)46 b(mo)5 b(de')45 b(an)-5
b(y)46 b(error)f(or)h(in)-5 b(terrupt)45 b(that)g(comes)h(up)g(will)g
(cause)g(Sc)-5 b(heme)46 b(48)996 5554 y(to)56 b(exit)f(immediately)g
(with)h(a)g(non-zero)g(exit)f(status.)76 b(Also,)56 b(the)f(command)i
(pro-)996 5754 y(cessor)f(do)5 b(esn't)56 b(prin)-5 b(t)56
b(prompts.)75 b(Batc)-5 b(h)55 b(mo)5 b(de)55 b(is)h(o\013)f(b)-5
b(y)56 b(default.)664 6087 y Fl(levels)h Fp(\(b)5 b(o)g(olean\))996
6287 y(Enables)56 b(or)g(disables)g(the)f(automatic)g(pushing)i(of)e(a)
g(new)g(command)h(lev)-5 b(el)55 b(when)996 6486 y(an)69
b(error,)i(in)-5 b(terrupt,)72 b(or)c(other)g(breakp)5
b(oin)-5 b(t)68 b(o)5 b(ccurs.)113 b(When)68 b(enabled)h(\(the)e(de-)
996 6685 y(fault\),)h(breakp)5 b(oin)-5 b(ts)66 b(push)i(a)d(new)h
(command)h(lev)-5 b(el,)69 b(and)d Fg(h)p Fp(eof)p Fg(i)f
Fp(\(see)g(ab)5 b(o)-5 b(v)g(e\))66 b(or)996 6884 y Fl(,reset)54
b Fp(is)f(required)f(to)g(return)g(to)g(top)g(lev)-5
b(el.)73 b(The)52 b(e\013ects)g(of)g(pushed)i(command)996
7084 y(lev)-5 b(els)56 b(include:)1196 7417 y Fg(\017)83
b Fp(a)55 b(longer)h(prompt)1196 7684 y Fg(\017)83 b
Fp(reten)-5 b(tion)55 b(of)g(the)g(con)-5 b(tin)g(uation)56
b(in)g(e\013ect)e(at)h(the)g(p)5 b(oin)-5 b(t)56 b(of)f(errors)1196
7950 y Fg(\017)83 b Fp(confusion)56 b(among)g(some)g(new)-5
b(comers)996 8284 y(With)53 b Fl(levels)h Fp(disabled)h(one)e(m)-5
b(ust)54 b(issue)h(a)e Fl(,push)h Fp(command)g(immediately)f(fol-)996
8483 y(lo)-5 b(wing)74 b(an)g(error)f(in)h(order)g(to)f(retain)g(the)g
(error)g(con)-5 b(tin)g(uation)75 b(for)e(debugging)996
8682 y(purp)5 b(oses;)78 b(otherwise)69 b(the)g(con)-5
b(tin)g(uation)71 b(is)f(lost)f(as)h(so)5 b(on)70 b(as)g(the)f(fo)5
b(cus)69 b(ob)9 b(ject)996 8882 y(c)-5 b(hanges.)74 b(If)51
b(y)-5 b(ou)52 b(don't)g(kno)-5 b(w)52 b(an)-5 b(ything)52
b(ab)5 b(out)52 b(the)f(a)-5 b(v)c(ailable)52 b(debugging)h(to)5
b(ols,)996 9081 y(then)55 b(lev)-5 b(els)56 b(migh)-5
b(t)56 b(as)g(w)-5 b(ell)56 b(b)5 b(e)55 b(disabled.)664
9415 y Fl(break-on-warnings)j Fp(\(b)5 b(o)g(olean\))996
9614 y(En)-5 b(ter)52 b(a)g(new)g(command)h(lev)-5 b(el)52
b(when)g(a)g(w)-5 b(arning)53 b(is)g(pro)5 b(duced,)53
b(just)f(as)g(when)g(an)996 9813 y(error)65 b(o)5 b(ccurs.)102
b(Normally)64 b(w)-5 b(arnings)66 b(only)f(result)g(in)g(a)f(displa)-5
b(y)g(ed)67 b(message)e(and)996 10012 y(the)55 b(program)h(do)5
b(es)56 b(not)f(stop)h(executing.)3362 10511 y(11)p eop
end
%%Page: 12 20
TeXDict begin 12 19 bop 1561 1046 a Fl(ask-before-loading)58
b Fp(\(b)5 b(o)g(olean\))1893 1245 y(If)63 b(on,)k(the)c(system)i(will)
f(ask)g(b)5 b(efore)63 b(loading)i(mo)5 b(dules)65 b(that)e(are)h
(argumen)-5 b(ts)65 b(to)1893 1445 y(the)55 b Fl(,open)h
Fp(command.)75 b Fl(Ask-before-loading)59 b Fp(is)c(o\013)h(b)-5
b(y)55 b(default.)1893 1880 y Fl(>)87 b(,set)h(ask-before-loading)1893
2079 y(will)g(ask)f(before)i(loading)f(modules)1893 2278
y(>)f(,open)h(random)1893 2477 y(Load)g(structure)g(random)h(\(y/n\)?)f
(y)1893 2677 y(>)1561 3112 y(load-noisily)57 b Fp(\(b)5
b(o)g(olean\))1893 3311 y(When)47 b(on,)i(the)d(system)h(will)h(prin)-5
b(t)47 b(out)g(the)f(names)i(of)f(mo)5 b(dules)48 b(and)f(\014les)h(as)
f(they)1893 3510 y(are)55 b(loaded.)74 b Fl(load-noisily)58
b Fp(is)e(o\013)f(b)-5 b(y)56 b(default.)1893 3945 y
Fl(>)87 b(,set)h(load-noisily)1893 4145 y(will)g(notify)g(when)g
(loading)g(modules)h(and)e(files)1893 4344 y(>)g(,open)h(random)1893
4543 y([random)g(/usr/local/lib/scheme48/big/random.scm])1893
4742 y(>)1561 5178 y(inline-values)57 b Fp(\(b)5 b(o)g(olean\))1893
5377 y(This)38 b(con)-5 b(trols)37 b(whether)g(or)g(not)g(the)g
(compiler)g(is)h(allo)-5 b(w)g(ed)38 b(to)f(substitute)g(v)-9
b(ariables')1893 5576 y(v)g(alues)42 b(in-line.)70 b(When)42
b Fl(inline-values)i Fp(mo)5 b(de)42 b(is)h(on,)i(some)d(Sc)-5
b(heme)43 b(pro)5 b(cedures)1893 5775 y(will)57 b(b)5
b(e)57 b(substituted)g(in-line;)i(when)e(it)f(is)i(o\013,)f(none)g
(will.)79 b(Section)56 b(2.4)h(has)h(more)1893 5975 y(information.)1561
6343 y Fl(inspector-menu-limit)h Fp(\(p)5 b(ositiv)-5
b(e)55 b(in)-5 b(teger\))1893 6543 y(This)46 b(con)-5
b(trols)46 b(ho)-5 b(w)45 b(man)-5 b(y)46 b(items)g(the)f(displa)-5
b(y)g(ed)46 b(p)5 b(ortion)45 b(of)g(the)g(insp)5 b(ector)45
b(men)-5 b(u)1893 6742 y(con)g(tains)56 b(at)f(most.)74
b(\(See)55 b(Section)g(3.7.\))1561 7111 y Fl(inspector-writing-depth)k
Fp(\(p)5 b(ositiv)-5 b(e)55 b(in)-5 b(teger\))1893 7310
y(This)70 b(con)-5 b(trols)69 b(the)g(maxim)-5 b(um)71
b(depth)e(to)g(whic)-5 b(h)69 b(the)g(insp)5 b(ector)69
b(prin)-5 b(ts)70 b(v)-9 b(alues.)1893 7509 y(\(See)55
b(Section)g(3.7.\))1561 7878 y Fl(inspector-writing-length)k
Fp(\(p)5 b(ositiv)-5 b(e)55 b(in)-5 b(teger\))1893 8077
y(This)66 b(con)-5 b(trols)66 b(the)f(maxim)-5 b(um)67
b(length)e(to)g(whic)-5 b(h)66 b(the)f(insp)5 b(ector)66
b(prin)-5 b(ts)66 b(v)-9 b(alues.)1893 8276 y(\(See)55
b(Section)g(3.7.\))1561 8645 y Fl(condition-writing-depth)k
Fp(\(p)5 b(ositiv)-5 b(e)55 b(in)-5 b(teger\))1893 8844
y(This)56 b(con)-5 b(trols)56 b(the)f(maxim)-5 b(um)57
b(depth)e(to)g(whic)-5 b(h)56 b(conditions)h(are)e(prin)-5
b(ted.)1561 9213 y Fl(condition-writing-length)59 b Fp(\(p)5
b(ositiv)-5 b(e)55 b(in)-5 b(teger\))1893 9412 y(This)56
b(con)-5 b(trols)56 b(the)f(maxim)-5 b(um)57 b(length)e(to)g(whic)-5
b(h)56 b(conditions)h(are)e(prin)-5 b(ted.)1561 9781
y Fl(trace-writing-length)59 b Fp(\(p)5 b(ositiv)-5 b(e)55
b(in)-5 b(teger\))1893 9980 y(This)45 b(con)-5 b(trols)46
b(the)e(maxim)-5 b(um)46 b(length)f(to)f(whic)-5 b(h)45
b(tracing)f(prin)-5 b(ts)46 b(pro)5 b(cedure)45 b(calls.)4259
10511 y(12)p eop end
%%Page: 13 21
TeXDict begin 13 20 bop 581 1046 a Fi(3.7)270 b(Insp)7
b(ection)91 b(mo)7 b(de)581 1421 y Fp(There)68 b(is)h(a)f(data)g(insp)5
b(ector)68 b(a)-5 b(v)c(ailable)69 b(via)f(the)g Fl(,inspect)h
Fp(and)g Fl(,debug)g Fp(commands.)581 1621 y(The)45 b(insp)5
b(ector)44 b(is)i(particularly)e(useful)i(with)e(pro)5
b(cedures,)47 b(con)-5 b(tin)g(uations,)49 b(and)c(records.)581
1820 y(The)68 b(command)h(pro)5 b(cessor)68 b(can)g(b)5
b(e)67 b(tak)-5 b(en)68 b(out)g(of)f(insp)5 b(ection)68
b(mo)5 b(de)68 b(b)-5 b(y)68 b(using)h(the)e Fl(q)581
2019 y Fp(command.)104 b(When)65 b(in)g(insp)5 b(ection)65
b(mo)5 b(de,)67 b(input)f(that)e(b)5 b(egins)65 b(with)g(a)g(letter)f
(or)h(digit)581 2218 y(is)e(read)f(as)h(a)g(command,)i(not)d(as)h(an)f
(expression.)96 b(T)-14 b(o)62 b(see)g(the)g(v)-9 b(alue)62
b(of)g(a)h(v)-9 b(ariable)62 b(or)581 2418 y(n)-5 b(um)g(b)5
b(er,)57 b(do)f Fl(\(begin)88 b Fo(exp)10 b Fl(\))56
b Fp(or)f(use)h(the)f Fl(,run)88 b Fo(exp)66 b Fp(command.)830
2623 y(In)58 b(insp)5 b(ection)58 b(mo)5 b(de)58 b(the)f(command)i(pro)
5 b(cessor)58 b(prin)-5 b(ts)59 b(out)f(a)g(men)-5 b(u)58
b(of)g(selectable)581 2822 y(comp)5 b(onen)-5 b(ts)69
b(for)e(the)g(curren)-5 b(t)68 b(fo)5 b(cus)67 b(ob)9
b(ject.)111 b(T)-14 b(o)67 b(insp)5 b(ect)68 b(a)f(particular)h(comp)5
b(onen)-5 b(t,)581 3021 y(just)48 b(t)-5 b(yp)5 b(e)47
b(the)g(corresp)5 b(onding)49 b(n)-5 b(um)g(b)5 b(er)49
b(in)g(the)e(men)-5 b(u.)72 b(That)48 b(comp)5 b(onen)-5
b(t)48 b(b)5 b(ecomes)48 b(the)581 3221 y(new)55 b(fo)5
b(cus)56 b(ob)9 b(ject.)73 b(F)-14 b(or)56 b(example:)581
3578 y Fl(>)87 b(,inspect)i('\(a)f(\(b)f(c\))h(d\))581
3777 y(\(a)g(\(b)f(c\))h(d\))581 4175 y([0])g(a)581 4375
y([1])g(\(b)f(c\))581 4574 y([2])h(d)581 4773 y(:)f(1)581
4972 y(\(b)h(c\))581 5371 y([0])g(b)581 5570 y([1])g(c)581
5769 y(:)830 6120 y Fp(When)48 b(a)f(new)h(fo)5 b(cus)47
b(ob)9 b(ject)47 b(is)i(selected)e(the)g(previous)h(one)g(is)g(pushed)h
(on)-5 b(to)48 b(a)g(stac)-5 b(k.)581 6319 y(Y)-14 b(ou)59
b(can)f(p)5 b(op)59 b(the)f(stac)-5 b(k,)60 b(rev)-5
b(erting)58 b(to)g(the)g(previous)h(ob)9 b(ject,)59 b(with)g(the)f
Fl(u)g Fp(command,)581 6518 y(or)e(use)f(the)g Fl(stack)i
Fp(command)f(to)f(mo)-5 b(v)g(e)56 b(to)f(an)g(earlier)h(ob)9
b(ject.)830 6724 y(Commands)57 b(useful)f(when)g(in)g(insp)5
b(ection)55 b(mo)5 b(de:)830 7075 y Fg(\017)83 b Fl(u)56
b Fp(\(up\))f(p)5 b(op)55 b(ob)9 b(ject)55 b(stac)-5
b(k)830 7431 y Fg(\017)83 b Fl(m)56 b Fp(\(more\))f(prin)-5
b(t)55 b(more)h(of)f(a)h(long)f(men)-5 b(u)830 7788 y
Fg(\017)83 b Fl(\(...\))75 b Fp(ev)-9 b(aluate)54 b(a)i(form)f(and)h
(select)f(result)830 8145 y Fg(\017)83 b Fl(q)56 b Fp(quit)830
8502 y Fg(\017)83 b Fl(template)66 b Fp(select)d(a)h(closure)g(or)g
(con)-5 b(tin)g(uation's)66 b(template)d(\(T)-14 b(emplates)64
b(are)g(the)996 8701 y(static)49 b(comp)5 b(onen)-5 b(ts)50
b(of)f(pro)5 b(cedures;)52 b(these)d(are)g(found)h(inside)g(of)g(pro)5
b(cedures)49 b(and)996 8900 y(con)-5 b(tin)g(uations,)78
b(and)72 b(con)-5 b(tain)72 b(the)f(quoted)g(constan)-5
b(ts)73 b(and)f(top-lev)-5 b(el)71 b(v)-9 b(ariables)996
9100 y(referred)55 b(to)g(b)-5 b(y)56 b(b)-5 b(yte-compiled)56
b(co)5 b(de.\))830 9456 y Fg(\017)83 b Fl(d)50 b Fp(\(do)-5
b(wn\))49 b(mo)-5 b(v)g(e)50 b(to)f(the)h(next)e(con)-5
b(tin)g(uation)51 b(\(curren)-5 b(t)49 b(ob)9 b(ject)49
b(m)-5 b(ust)50 b(b)5 b(e)49 b(a)h(con)-5 b(tin-)996
9656 y(uation\))830 10012 y Fg(\017)83 b Fl(menu)56 b
Fp(prin)-5 b(t)56 b(the)f(selection)h(men)-5 b(u)56 b(for)f(the)g(fo)5
b(cus)55 b(ob)9 b(ject)3362 10511 y(13)p eop end
%%Page: 14 22
TeXDict begin 14 21 bop 1727 1046 a Fp(Multiple)75 b(selection)h
(commands)g(\()p Fl(u)p Fp(,)k Fl(d)p Fp(,)h(and)75 b(men)-5
b(u)76 b(indexes\))f(ma)-5 b(y)76 b(b)5 b(e)75 b(put)g(on)g(a)1478
1245 y(single)56 b(line.)1727 1449 y(All)39 b(ordinary)i(commands)g
(are)f(a)-5 b(v)c(ailable)40 b(when)g(in)g(insp)5 b(ection)40
b(mo)5 b(de.)69 b(Similarly)-14 b(,)44 b(the)1478 1648
y(insp)5 b(ection)55 b(commands)i(can)f(b)5 b(e)55 b(used)h(when)f(not)
h(in)f(insp)5 b(ection)56 b(mo)5 b(de.)74 b(F)-14 b(or)56
b(example:)1478 1998 y Fl(>)87 b(\(list)h('a)g('\(b)f(c\))h('d\))1478
2197 y('\(a)f(\(b)h(c\))g(d\))1478 2396 y(>)f(,1)1478
2596 y('\(b)g(c\))1478 2795 y(>)g(,menu)1478 2994 y([0])g(b)1478
3193 y([1])g(c)1478 3393 y(>)1727 3738 y Fp(If)66 b(the)g(curren)-5
b(t)66 b(command)h(lev)-5 b(el)66 b(w)-5 b(as)67 b(initiated)f(b)5
b(ecause)67 b(of)f(a)g(breakp)5 b(oin)-5 b(t)66 b(in)h(the)1478
3937 y(next)61 b(lev)-5 b(el)62 b(do)-5 b(wn,)65 b(then)d
Fl(,debug)i Fp(will)e(in)-5 b(v)g(ok)g(e)63 b(the)f(insp)5
b(ector)62 b(on)h(the)e(con)-5 b(tin)g(uation)64 b(at)1478
4136 y(the)e(p)5 b(oin)-5 b(t)62 b(of)g(the)g(error.)95
b(The)62 b Fl(u)h Fp(and)g Fl(d)f Fp(\(up)h(and)f(do)-5
b(wn\))63 b(commands)h(then)e(mak)-5 b(e)63 b(the)1478
4336 y(insp)5 b(ected-v)-9 b(alue)38 b(stac)-5 b(k)38
b(lo)5 b(ok)37 b(lik)-5 b(e)38 b(a)h(con)-5 b(v)g(en)g(tional)39
b(stac)-5 b(k)38 b(debugger,)k(with)c(con)-5 b(tin)g(uations)1478
4535 y(pla)g(ying)39 b(the)f(role)g(of)g(stac)-5 b(k)39
b(frames.)68 b Fl(D)39 b Fp(go)5 b(es)38 b(to)g(older)g(or)h(deep)5
b(er)38 b(con)-5 b(tin)g(uations)40 b(\(frames\),)1478
4734 y(and)56 b Fl(u)f Fp(go)5 b(es)55 b(bac)-5 b(k)56
b(up)g(to)f(more)g(recen)-5 b(t)55 b(ones.)1478 5307
y Fi(3.8)269 b(Command)92 b(programs)1478 5679 y Fp(The)62
b Fl(exec)h Fp(pac)-5 b(k)c(age)62 b(con)-5 b(tains)63
b(pro)5 b(cedures)63 b(that)e(are)i(used)g(to)e(execute)g(the)h
(command)1478 5878 y(pro)5 b(cessor's)39 b(commands.)70
b(A)37 b(command)j Fl(,)p Fo(fo)-8 b(o)48 b Fp(is)38
b(executed)f(b)-5 b(y)39 b(applying)f(the)g(v)-9 b(alue)38
b(of)g(the)1478 6077 y(iden)-5 b(ti\014er)48 b Fo(fo)-8
b(o)58 b Fp(in)48 b(the)g Fl(exec)g Fp(pac)-5 b(k)c(age)48
b(to)f(the)h(\(suitably)g(parsed\))g(command)h(argumen)-5
b(ts.)1561 6460 y Fl(,exec)88 b([)p Fo(c)-8 b(ommand)17
b Fl(])1893 6659 y Fp(Ev)-9 b(aluate)54 b Fo(c)-8 b(ommand)72
b Fp(in)56 b(the)f Fl(exec)h Fp(pac)-5 b(k)c(age.)74
b(F)-14 b(or)56 b(example,)f(use)1893 7075 y Fl(,exec)88
b(,load)g Fo(\014lename)1893 7491 y Fp(to)70 b(load)h(a)f(\014le)g(con)
-5 b(taining)71 b(commands.)121 b(If)70 b(no)g Fo(c)-8
b(ommand)87 b Fp(is)71 b(giv)-5 b(en,)75 b(the)70 b Fl(exec)1893
7691 y Fp(pac)-5 b(k)c(age)55 b(b)5 b(ecomes)55 b(the)g(execution)g
(pac)-5 b(k)c(age)55 b(for)g(future)g(commands.)1727
8074 y(The)g(required)g(argumen)-5 b(t)56 b(t)-5 b(yp)5
b(es)56 b(are)f(as)h(follo)-5 b(ws:)1727 8419 y Fg(\017)83
b Fp(\014lenames)56 b(should)h(b)5 b(e)55 b(strings)1727
8769 y Fg(\017)83 b Fp(other)55 b(names)h(and)g(iden)-5
b(ti\014ers)56 b(should)h(b)5 b(e)55 b(sym)-5 b(b)5 b(ols)1727
9118 y Fg(\017)83 b Fp(expressions)57 b(should)f(b)5
b(e)55 b(s-expressions)1727 9468 y Fg(\017)83 b Fp(commands)65
b(\(as)f(for)g Fl(,config)h Fp(and)f Fl(,exec)h Fp(itself)13
b(\))63 b(should)i(b)5 b(e)64 b(lists)g(of)g(the)f(form)1893
9667 y Fl(\()p Fo(c)-8 b(ommand-name)100 b(ar)-8 b(gument)103
b(...)p Fl(\))74 b Fp(where)55 b Fo(c)-8 b(ommand-name)68
b Fp(is)56 b(a)g(sym)-5 b(b)5 b(ol.)1727 10012 y(F)-14
b(or)56 b(example,)f(the)g(follo)-5 b(wing)56 b(t)-5
b(w)g(o)56 b(commands)h(are)e(equiv)-9 b(alen)k(t:)4259
10511 y(14)p eop end
%%Page: 15 23
TeXDict begin 15 22 bop 581 1046 a Fl(,config)89 b(,load)f(my-file.scm)
581 1445 y(,exec)g(\(config)h('\(load)f("my-file.scm"\)\))830
1745 y Fp(The)52 b(\014le)g Fl(scheme/vm/load-vm.scm)k
Fp(in)c(the)g(source)g(directory)f(con)-5 b(tains)53
b(an)f(exam-)581 1944 y(ple)k(of)f(an)g Fl(exec)h Fp(program.)581
2487 y Fi(3.9)270 b(Building)91 b(images)664 2850 y Fl(,dump)d
Fo(\014lename)101 b Fl([)p Fo(identi\014c)-8 b(ation)13
b Fl(])996 3050 y Fp(W)-14 b(rites)71 b(the)g(curren)-5
b(t)71 b(heap)g(out)g(to)f(a)h(\014le,)k(whic)-5 b(h)72
b(can)f(then)g(b)5 b(e)70 b(run)i(using)g(the)996 3249
y(virtual)59 b(mac)-5 b(hine.)85 b(The)58 b(new)h(image)g(\014le)g
(includes)g(the)g(command)h(pro)5 b(cessor.)84 b(If)996
3448 y(presen)-5 b(t,)81 b Fo(identi\014c)-8 b(ation)88
b Fp(should)76 b(b)5 b(e)75 b(a)f(string)i(\(written)d(with)i(double)g
(quotes\);)996 3647 y(this)56 b(string)g(will)g(b)5 b(e)55
b(part)g(of)g(the)g(greeting)g(message)h(as)g(the)f(image)h(starts)f
(up.)664 3964 y Fl(,build)88 b Fo(exp)98 b(\014lename)k
Fl([)p Fo(option)59 b(.)25 b(.)g(.)g Fl(])996 4163 y
Fp(Lik)-5 b(e)68 b Fl(,dump)p Fp(,)73 b(except)67 b(that)h(the)g(image)
g(\014le)h(con)-5 b(tains)69 b(the)f(v)-9 b(alue)68 b(of)81
b Fo(exp)10 b Fp(,)72 b(whic)-5 b(h)996 4362 y(should)43
b(b)5 b(e)41 b(a)g(pro)5 b(cedure)41 b(of)g(one)g(argumen)-5
b(t,)45 b(instead)c(of)g(the)g(command)h(pro)5 b(cessor.)996
4561 y(When)65 b Fo(\014lename)79 b Fp(is)66 b(resumed,)j(that)64
b(pro)5 b(cedure)65 b(will)h(b)5 b(e)64 b(in)-5 b(v)g(ok)g(ed)66
b(on)g(the)e(VM's)996 4761 y Fl(-a)f Fp(argumen)-5 b(ts,)66
b(whic)-5 b(h)64 b(are)e(passed)i(as)f(a)g(list)g(of)f(OS)i(strings)f
(\(see)g(section)f(5.15.)996 4960 y(The)53 b(pro)5 b(cedure)52
b(should)j(return)d(an)h(in)-5 b(teger)53 b(whic)-5 b(h)53
b(is)h(returned)e(to)h(the)f(program)996 5159 y(that)g(in)-5
b(v)g(ok)g(ed)54 b(the)e(VM.)g(The)h(command)g(pro)5
b(cessor)53 b(and)g(debugging)h(system)f(are)996 5358
y(not)h(included)h(in)f(the)f(image)i(\(unless)g(y)-5
b(ou)54 b(go)g(to)f(some)i(e\013ort)e(to)g(preserv)-5
b(e)55 b(them,)996 5558 y(suc)-5 b(h)57 b(as)f(retaining)f(a)h(con)-5
b(tin)g(uation\).)996 5815 y(If)90 b Fl(no-warnings)78
b Fp(app)5 b(ears)77 b(as)h(an)f Fo(option)89 b Fp(after)76
b(the)h(\014le)f(name,)83 b(no)77 b(w)-5 b(arnings)996
6015 y(ab)5 b(out)60 b(unde\014ned)h(external)f(bindings)i(\(see)d
(Section)h(8.2\))g(will)h(b)5 b(e)59 b(prin)-5 b(ted)61
b(up)5 b(on)996 6214 y(resuming)58 b(the)f(image.)78
b(This)57 b(is)h(useful)f(when)g(the)f(de\014nitions)i(of)f(external)e
(bind-)996 6413 y(ings)50 b(app)5 b(ear)49 b(in)h(shared)g(ob)9
b(jects)49 b(that)f(are)h(only)g(loaded)h(after)e(the)h(resumption)h
(of)996 6612 y(the)55 b(image.)996 6870 y(Doing)79 b
Fl(,flush)g Fp(b)5 b(efore)78 b(building)i(an)e(image)h(will)g(reduce)f
(the)g(amoun)-5 b(t)79 b(of)f(de-)996 7070 y(bugging)73
b(information)f(in)g(the)f(image,)76 b(making)c(for)g(a)f(smaller)i
(image)f(\014le,)k(but)996 7269 y(if)64 b(an)g(error)f(o)5
b(ccurs,)66 b(the)d(error)g(message)i(ma)-5 b(y)64 b(b)5
b(e)63 b(less)i(helpful.)99 b(Doing)64 b Fl(,flush)996
7468 y(source)88 b(maps)55 b Fp(b)5 b(efore)52 b(loading)i(an)-5
b(y)54 b(programs)h(used)f(in)g(the)f(image)h(will)f(mak)-5
b(e)54 b(it)996 7667 y(still)i(smaller.)75 b(See)55 b(section)h(3.10)f
(for)g(more)h(information.)581 8210 y Fi(3.10)270 b(Resource)90
b(query)f(and)i(con)-7 b(trol)581 8573 y Fp(.)664 8899
y Fl(,time)88 b Fo(exp)996 9098 y Fp(Measure)56 b(execution)f(time.)664
9415 y Fl(,collect)996 9614 y Fp(In)-5 b(v)g(ok)g(e)60
b(the)f(garbage)h(collector.)86 b(Ordinarily)60 b(this)g(happ)5
b(ens)60 b(automatically)-14 b(,)61 b(but)996 9813 y(the)h(command)h
(tells)f(ho)-5 b(w)62 b(m)-5 b(uc)g(h)64 b(space)e(is)h(a)-5
b(v)c(ailable)62 b(b)5 b(efore)61 b(and)i(after)e(the)g(col-)996
10012 y(lection.)3362 10511 y(15)p eop end
%%Page: 16 24
TeXDict begin 16 23 bop 1561 1046 a Fl(,keep)88 b Fo(kind)1561
1430 y Fl(,flush)g Fo(kind)1893 1629 y Fp(These)68 b(con)-5
b(trol)68 b(the)g(amoun)-5 b(t)68 b(of)g(debugging)h(information)f
(retained)g(after)f(com-)1893 1829 y(piling)58 b(pro)5
b(cedures.)81 b(This)59 b(information)f(can)f(consume)i(a)f(fair)f
(amoun)-5 b(t)58 b(of)g(space.)1893 2028 y Fo(kind)73
b Fp(is)56 b(one)f(of)g(the)g(follo)-5 b(wing:)2092 2412
y Fg(\017)83 b Fl(maps)56 b Fp(-)g(en)-5 b(vironmen)g(t)56
b(maps)h(\(lo)5 b(cal)54 b(v)-9 b(ariable)55 b(names,)i(for)e(insp)5
b(ector\))2092 2703 y Fg(\017)83 b Fl(source)57 b Fp(-)e(source)h(co)5
b(de)55 b(for)g(con)-5 b(tin)g(uations)57 b(\(displa)-5
b(y)g(ed)56 b(b)-5 b(y)56 b(insp)5 b(ector\))2092 2995
y Fg(\017)83 b Fl(names)65 b Fp(-)f(pro)5 b(cedure)63
b(names)i(\(as)f(displa)-5 b(y)g(ed)65 b(b)-5 b(y)67
b Fl(write)d Fp(and)h(in)f(error)f(mes-)2258 3194 y(sages\))2092
3486 y Fg(\017)83 b Fl(files)56 b Fp(-)g(source)g(\014le)f(names)1893
3870 y(These)48 b(commands)h(refer)e(to)g(future)h(compilations)h(only)
-14 b(,)49 b(not)f(to)f(pro)5 b(cedures)48 b(that)1893
4069 y(already)54 b(exist.)73 b(T)-14 b(o)54 b(ha)-5
b(v)g(e)55 b(an)-5 b(y)54 b(e\013ect,)f(they)h(m)-5 b(ust)55
b(b)5 b(e)53 b(done)i(b)5 b(efore)53 b(programs)i(are)1893
4268 y(loaded.)74 b(The)56 b(default)f(is)h(to)f(k)-5
b(eep)55 b(all)g(four)h(t)-5 b(yp)5 b(es.)1561 4652 y
Fl(,flush)1893 4852 y Fp(The)65 b(\015ush)i(command)g(with)e(no)h
(argumen)-5 b(t)66 b(deletes)f(the)g(database)h(of)f(names)i(of)1893
5051 y(initial)54 b(pro)5 b(cedures.)73 b(Doing)54 b
Fl(,flush)g Fp(b)5 b(efore)53 b(a)g Fl(,build)i Fp(or)e
Fl(,dump)h Fp(will)g(mak)-5 b(e)54 b(the)1893 5250 y(resulting)49
b(image)f(signi\014can)-5 b(tly)49 b(smaller,)i(but)d(will)h
(compromise)g(the)f(information)1893 5449 y(con)-5 b(ten)g(t)55
b(of)g(man)-5 b(y)56 b(error)g(messages.)1478 6067 y
Fi(3.11)270 b(Threads)1478 6455 y Fp(Eac)-5 b(h)63 b(command)i(lev)-5
b(el)63 b(has)g(its)h(o)-5 b(wn)63 b(set)g(of)g(threads.)98
b(These)63 b(threads)h(are)f(susp)5 b(ended)1478 6654
y(when)55 b(a)f(new)h(lev)-5 b(el)55 b(is)g(en)-5 b(tered)55
b(and)g(resumed)h(when)e(the)h(o)-5 b(wning)55 b(lev)-5
b(el)55 b(again)g(b)5 b(ecomes)1478 6853 y(the)54 b(curren)-5
b(t)55 b(lev)-5 b(el.)73 b(A)54 b(thread)h(that)f(raises)h(an)g(error)g
(is)g(not)g(resumed)g(unless)h(explicitly)1478 7053 y(restarted)67
b(using)i(the)e Fl(,proceed)i Fp(command.)111 b(In)68
b(addition)g(to)f(an)-5 b(y)68 b(threads)g(spa)-5 b(wned)1478
7252 y(b)g(y)60 b(the)g(user,)i(eac)-5 b(h)60 b(lev)-5
b(el)60 b(has)h(a)f(thread)g(that)f(runs)i(the)f(command)h(pro)5
b(cessor)61 b(on)f(that)1478 7451 y(lev)-5 b(el.)85 b(A)58
b(new)h(command-pro)5 b(cessor)61 b(thread)e(is)h(started)f(if)g(the)g
(curren)-5 b(t)59 b(one)g(dies)h(or)f(is)1478 7651 y(terminated.)89
b(When)61 b(a)f(command)i(lev)-5 b(el)61 b(is)g(abandoned)h(for)e(a)h
(lo)-5 b(w)g(er)61 b(lev)-5 b(el,)62 b(or)e(when)h(a)1478
7850 y(lev)-5 b(el)61 b(is)i(restarted)e(using)i Fl(,reset)p
Fp(,)h(all)e(of)g(the)f(threads)h(on)g(that)f(lev)-5
b(el)62 b(are)g(terminated)1478 8049 y(and)56 b(an)-5
b(y)58 b Fl(dynamic-wind)f Fp(\\after")e(th)-5 b(unks)56
b(are)f(run.)1727 8261 y(The)88 b(follo)-5 b(wing)89
b(commands)h(are)f(useful)g(when)f(debugging)h(m)-5 b(ultithreaded)90
b(pro-)1478 8460 y(grams:)1561 8831 y Fl(,resume)e([)p
Fo(numb)-8 b(er)18 b Fl(])1893 9031 y Fp(P)-5 b(ops)67
b(out)e(to)h(a)g(giv)-5 b(en)66 b(lev)-5 b(el)65 b(and)i(resumes)g
(running)g(all)f(threads)g(at)f(that)g(lev)-5 b(el.)1893
9230 y Fo(Numb)d(er)74 b Fp(defaults)55 b(to)g(zero.)1561
9614 y Fl(,threads)1893 9813 y Fp(In)-5 b(v)g(ok)g(es)67
b(the)g(insp)5 b(ector)66 b(on)h(a)g(list)g(of)f(the)g(threads)h
(running)h(at)f(the)f(next)g(lo)-5 b(w)g(er)1893 10012
y(command)56 b(lev)-5 b(el.)4259 10511 y(16)p eop end
%%Page: 17 25
TeXDict begin 17 24 bop 664 1046 a Fl(,exit-when-done)90
b([)p Fo(exp)10 b Fl(])996 1245 y Fp(W)-14 b(aits)70
b(un)-5 b(til)71 b(all)f(user)h(threads)f(ha)-5 b(v)g(e)70
b(completed)g(and)h(then)f(exits)f(bac)-5 b(k)70 b(out)g(to)996
1445 y(shell)53 b(\(or)e(executiv)-5 b(e)50 b(or)i(whatev)-5
b(er)51 b(in)-5 b(v)g(ok)g(ed)52 b(Sc)-5 b(heme)52 b(48)g(in)g(the)f
(\014rst)h(place\).)72 b Fo(Exp)996 1644 y Fp(should)39
b(ev)-9 b(aluate)37 b(to)g(an)h(in)-5 b(teger)38 b(whic)-5
b(h)38 b(is)h(then)e(returned)h(to)f(the)h(calling)g(program.)581
2193 y Fi(3.12)270 b(Quite)90 b(obscure)664 2557 y Fl(,go)e
Fo(exp)996 2756 y Fp(This)62 b(is)g(lik)-5 b(e)61 b Fl(,exit)88
b Fo(exp)72 b Fp(except)60 b(that)h(the)g(ev)-9 b(aluation)61
b(of)73 b Fo(exp)f Fp(is)62 b(tail-recursiv)-5 b(e)996
2955 y(with)63 b(resp)5 b(ect)63 b(to)g(the)g(command)h(pro)5
b(cessor.)99 b(This)64 b(means)g(that)f(the)g(command)996
3154 y(pro)5 b(cessor)54 b(itself)f(can)g(probably)h(b)5
b(e)53 b(GC'ed,)h(should)h(a)e(garbage)g(collection)g(o)5
b(ccur)996 3354 y(in)74 b(the)f(execution)f(of)86 b Fo(exp)10
b Fp(.)128 b(If)72 b(an)i(error)f(o)5 b(ccurs)73 b(Sc)-5
b(heme)74 b(48)f(will)g(exit)g(with)g(a)996 3553 y(non-zero)56
b(v)-9 b(alue.)664 3885 y Fl(,translate)89 b Fo(fr)-8
b(om)99 b(to)996 4084 y Fp(F)-14 b(or)46 b Fl(load)f
Fp(and)g(the)f Fl(,load)i Fp(command)f(\(but)g(not)f(for)h
Fl(open-)p Fg(f)p Fl(in|out)p Fg(g)p Fl(put-file)p Fp(\),)996
4283 y(\014le)39 b(names)h(b)5 b(eginning)39 b(with)f(the)h(string)i
Fo(fr)-8 b(om)50 b Fp(will)39 b(b)5 b(e)39 b(c)-5 b(hanged)39
b(so)g(that)f(the)g(initial)996 4483 y Fo(fr)-8 b(om)67
b Fp(is)56 b(replaced)g(b)-5 b(y)55 b(the)g(string)k
Fo(to)10 b Fp(.)74 b(E.g.)996 4881 y Fl(,translate)89
b(/usr/gjc/)g(/zu/gjc/)996 5280 y Fp(will)51 b(cause)g
Fl(\(load)88 b("/usr/gjc/foo.scm"\))54 b Fp(to)c(ha)-5
b(v)g(e)50 b(the)g(same)i(e\013ect)d(as)i Fl(\(load)996
5479 y("/zu/gjc/foo.scm"\))p Fp(.)664 5811 y Fl(,from-file)89
b Fo(\014lename)101 b(form)f Fl(...)87 b(,end)996 6010
y Fp(This)62 b(is)g(used)f(b)-5 b(y)61 b(the)g Fl(cmuscheme48)i
Fp(Emacs)e(library)h(to)e(indicate)h(the)f(\014le)i(from)996
6210 y(whic)-5 b(h)55 b(the)e Fo(form)13 b Fp(s)54 b(came.)73
b Fo(Filename)68 b Fp(is)54 b(then)g(used)g(b)-5 b(y)54
b(the)f(command)i(pro)5 b(cessor)996 6409 y(to)55 b(determine)h(the)f
(pac)-5 b(k)c(age)55 b(in)g(whic)-5 b(h)56 b(the)f Fo(form)13
b Fp(s)55 b(are)h(to)f(b)5 b(e)55 b(ev)-9 b(aluated.)3362
10511 y(17)p eop end
%%Page: 18 26
TeXDict begin 18 25 bop 1478 2300 a Fk(Chapter)129 b(4)1478
3139 y Fn(Mo)13 b(dule)155 b(system)1478 4011 y Fp(This)83
b(c)-5 b(hapter)83 b(describ)5 b(es)83 b(Sc)-5 b(heme)84
b(48's)f(mo)5 b(dule)83 b(system.)156 b(The)83 b(mo)5
b(dule)83 b(system)g(is)1478 4211 y(unique)37 b(in)g(the)g(exten)-5
b(t)36 b(to)g(whic)-5 b(h)38 b(it)e(supp)5 b(orts)38
b(b)5 b(oth)37 b(static)f(linking)i(and)f(rapid)h(turnaround)1478
4410 y(during)88 b(program)g(dev)-5 b(elopmen)g(t.)169
b(The)87 b(design)h(w)-5 b(as)88 b(in\015uenced)g(b)-5
b(y)88 b(Standard)f(ML)1478 4609 y(mo)5 b(dules[7)q(])70
b(and)h(b)-5 b(y)70 b(the)g(mo)5 b(dule)70 b(system)h(for)f(Sc)-5
b(heme)70 b(Xero)-5 b(x[4].)118 b(It)70 b(has)h(also)g(b)5
b(een)1478 4808 y(shap)g(ed)62 b(b)-5 b(y)61 b(the)g(needs)g(of)g(Sc)-5
b(heme)62 b(48,)h(whic)-5 b(h)62 b(is)f(designed)h(to)f(run)h(b)5
b(oth)60 b(on)i(w)-5 b(orksta-)1478 5008 y(tions)56 b(and)f(on)h
(relativ)-5 b(ely)55 b(small)h(\(less)g(than)f(1)h(Mb)-5
b(yte\))55 b(em)-5 b(b)5 b(edded)56 b(con)-5 b(trollers.)1727
5216 y(Except)41 b(where)h(noted,)i(ev)-5 b(erything)42
b(describ)5 b(ed)42 b(here)g(is)h(implemen)-5 b(ted)43
b(in)f(Sc)-5 b(heme)43 b(48,)1478 5415 y(and)f(exercised)f(b)-5
b(y)42 b(the)f(Sc)-5 b(heme)42 b(48)g(implemen)-5 b(tation)43
b(and)f(some)g(application)g(programs.)1727 5623 y(Unlik)-5
b(e)47 b(the)g(Common)h(Lisp)g(pac)-5 b(k)c(age)48 b(system,)h(the)e
(mo)5 b(dule)48 b(system)g(describ)5 b(ed)47 b(here)1478
5822 y(con)-5 b(trols)69 b(the)e(mapping)j(of)d(names)i(to)f
(denotations,)k(not)c(the)f(mapping)j(of)e(strings)h(to)1478
6022 y(sym)-5 b(b)5 b(ols.)1478 6617 y Fi(4.1)269 b(In)-7
b(tro)7 b(duction)1478 6997 y Fp(The)81 b(mo)5 b(dule)81
b(system)h(supp)5 b(orts)82 b(the)e(structured)h(division)h(of)f(a)g
(corpus)h(of)f(Sc)-5 b(heme)1478 7197 y(soft)g(w)g(are)65
b(in)-5 b(to)65 b(a)g(set)g(of)g(mo)5 b(dules.)103 b(Eac)-5
b(h)66 b(mo)5 b(dule)65 b(has)h(its)f(o)-5 b(wn)65 b(isolated)g
(namespace,)1478 7396 y(with)47 b(visibilit)-5 b(y)49
b(of)e(bindings)i(con)-5 b(trolled)48 b(b)-5 b(y)48 b(mo)5
b(dule)49 b(descriptions)f(written)f(in)h(a)g(sp)5 b(ecial)1478
7595 y Fo(c)-8 b(on\014gur)g(ation)60 b(language.)1727
7803 y Fp(A)j(mo)5 b(dule)64 b(ma)-5 b(y)65 b(b)5 b(e)63
b(instan)-5 b(tiated)64 b(m)-5 b(ultiple)65 b(times,)h(pro)5
b(ducing)65 b(sev)-5 b(eral)64 b Fo(p)-8 b(ackages)p
Fp(,)1478 8002 y(just)37 b(as)g(a)g(lam)-5 b(b)5 b(da-expression)40
b(can)d(b)5 b(e)37 b(instan)-5 b(tiated)37 b(m)-5 b(ultiple)38
b(times)f(to)g(pro)5 b(duce)37 b(sev)-5 b(eral)1478 8202
y(di\013eren)g(t)53 b(pro)5 b(cedures.)73 b(Since)53
b(single)h(instan)-5 b(tiation)53 b(is)h(the)e(normal)i(case,)g(w)-5
b(e)53 b(will)g(defer)1478 8401 y(discussion)g(of)f(m)-5
b(ultiple)52 b(instan)-5 b(tiation)52 b(un)-5 b(til)52
b(a)g(later)f(section.)72 b(F)-14 b(or)52 b(no)-5 b(w)52
b(y)-5 b(ou)52 b(can)f(think)1478 8600 y(of)83 b(a)g(pac)-5
b(k)c(age)82 b(as)i(simply)g(a)f(mo)5 b(dule's)84 b(in)-5
b(ternal)84 b(en)-5 b(vironmen)g(t)83 b(mapping)i(names)f(to)1478
8799 y(denotations.)1727 9007 y(A)49 b(mo)5 b(dule)51
b(exp)5 b(orts)49 b(bindings)i(b)-5 b(y)51 b(pro)-5 b(viding)50
b(views)g(on)-5 b(to)50 b(the)g(underlying)g(pac)-5 b(k)c(age.)1478
9207 y(Suc)k(h)51 b(a)f(view)f(is)i(called)f(a)g Fo(structur)-8
b(e)51 b Fp(\(terminology)e(from)h(Standard)h(ML\).)f(One)g(mo)5
b(dule)1478 9406 y(ma)-5 b(y)67 b(pro)-5 b(vide)67 b(sev)-5
b(eral)66 b(di\013eren)-5 b(t)67 b(views.)107 b(A)66
b(structure)g(is)h(just)g(a)f(subset)i(of)e(the)g(pac)-5
b(k-)1478 9605 y(age's)56 b(bindings.)77 b(The)56 b(particular)g(set)f
(of)h(names)g(whose)h(bindings)g(are)f(exp)5 b(orted)54
b(is)j(the)1478 9804 y(structure's)f Fo(interfac)-8 b(e)p
Fp(.)1727 10012 y(A)75 b(mo)5 b(dule)76 b(imp)5 b(orts)76
b(bindings)i(from)e(other)f(mo)5 b(dules)76 b(b)-5 b(y)76
b(either)g Fo(op)-8 b(ening)76 b Fp(or)g Fo(ac-)4259
10511 y Fp(18)p eop end
%%Page: 19 27
TeXDict begin 19 26 bop 581 1046 a Fo(c)-8 b(essing)62
b Fp(some)h(structures)e(that)g(are)h(built)f(on)h(other)f(pac)-5
b(k)c(ages.)93 b(When)61 b(a)h(structure)f(is)581 1245
y(op)5 b(ened,)56 b(all)f(of)g(its)h(exp)5 b(orted)54
b(bindings)j(are)e(visible)h(in)g(the)f(clien)-5 b(t)55
b(pac)-5 b(k)c(age.)830 1456 y(F)-14 b(or)56 b(example:)581
1836 y Fl(\(define-structure)90 b(foo)e(\(export)g(a)g(c)f(cons\))755
2035 y(\(open)i(scheme\))755 2235 y(\(begin)g(\(define)f(a)f(1\))1366
2434 y(\(define)h(\(b)g(x\))f(\(+)h(a)f(x\)\))1366 2633
y(\(define)h(\(c)g(y\))f(\(*)h(\(b)f(a\))h(y\)\)\)\))581
3032 y(\(define-structure)i(bar)e(\(export)g(d\))755
3231 y(\(open)h(scheme)f(foo\))755 3430 y(\(begin)h(\(define)f(\(d)g
(w\))f(\(+)h(a)f(\(c)g(w\)\)\)\)\))581 3798 y Fp(This)77
b(con\014guration)g(de\014nes)h(t)-5 b(w)g(o)76 b(structures,)82
b Fl(foo)77 b Fp(and)g Fl(bar)p Fp(.)138 b Fl(foo)77
b Fp(is)g(a)f(view)g(on)h(a)581 3997 y(pac)-5 b(k)c(age)53
b(in)g(whic)-5 b(h)54 b(the)f Fl(scheme)h Fp(structure's)f(bindings)i
(\(including)f Fl(define)g Fp(and)f Fl(+)p Fp(\))g(are)581
4197 y(visible,)78 b(together)72 b(with)g(bindings)j(for)d
Fl(a)p Fp(,)77 b Fl(b)p Fp(,)h(and)73 b Fl(c)p Fp(.)126
b Fl(foo)p Fp('s)74 b(in)-5 b(terface)72 b(is)h Fl(\(export)88
b(a)581 4396 y(c)f(cons\))p Fp(,)67 b(so)e(of)e(the)h(bindings)h(in)f
(its)g(underlying)h(pac)-5 b(k)c(age,)65 b Fl(foo)g Fp(only)e(exp)5
b(orts)64 b(those)581 4595 y(three.)106 b(Similarly)-14
b(,)70 b(structure)c Fl(bar)h Fp(consists)h(of)e(the)g(binding)h(of)f
Fl(d)h Fp(from)f(a)g(pac)-5 b(k)c(age)66 b(in)581 4794
y(whic)-5 b(h)68 b(b)5 b(oth)67 b Fl(scheme)p Fp('s)i(and)f
Fl(foo)p Fp('s)g(bindings)h(are)f(visible.)110 b Fl(foo)p
Fp('s)68 b(binding)h(of)e Fl(cons)h Fp(is)581 4994 y(imp)5
b(orted)56 b(from)f(the)g(Sc)-5 b(heme)56 b(structure)f(and)h(then)f
(re-exp)5 b(orted.)830 5205 y(A)61 b(mo)5 b(dule's)62
b(b)5 b(o)g(dy)-14 b(,)61 b(the)g(part)g(follo)-5 b(wing)61
b Fl(begin)h Fp(in)f(the)g(ab)5 b(o)-5 b(v)g(e)61 b(example,)h(is)g(ev)
-9 b(alu-)581 5404 y(ated)49 b(in)g(an)h(isolated)f(lexical)g(scop)5
b(e)49 b(completely)g(sp)5 b(eci\014ed)49 b(b)-5 b(y)50
b(the)f(pac)-5 b(k)c(age)48 b(de\014nition's)581 5603
y Fl(open)64 b Fp(and)g Fl(access)g Fp(clauses.)99 b(In)64
b(particular,)i(the)d(binding)h(of)f(the)g(syn)-5 b(tactic)63
b(op)5 b(erator)581 5802 y Fl(define-structure)66 b Fp(is)e(not)f
(visible)g(unless)i(it)e(comes)h(from)f(some)h(op)5 b(ened)63
b(structure.)581 6002 y(Similarly)-14 b(,)53 b(bindings)g(from)e(the)g
Fl(scheme)h Fp(structure)f(aren't)g(visible)h(unless)h(they)d(b)5
b(ecome)581 6201 y(so)56 b(b)-5 b(y)56 b Fl(scheme)g
Fp(\(or)f(an)h(equiv)-9 b(alen)k(t)54 b(structure\))h(b)5
b(eing)55 b(op)5 b(ened.)581 6813 y Fi(4.2)270 b(The)90
b(con\014guration)h(language)581 7199 y Fp(The)51 b(con\014guration)h
(language)f(consists)i(of)e(top-lev)-5 b(el)51 b(de\014ning)h(forms)f
(for)g(mo)5 b(dules)52 b(and)581 7398 y(in)-5 b(terfaces.)74
b(Its)55 b(syn)-5 b(tax)56 b(is)g(giv)-5 b(en)55 b(in)h(\014gure)g
(4.1.)830 7610 y(A)46 b Fl(define-structure)k Fp(form)d(in)-5
b(tro)5 b(duces)47 b(a)g(binding)h(of)e(a)h(name)g(to)g(a)f(structure.)
71 b(A)581 7809 y(structure)57 b(is)g(a)g(view)f(on)h(an)g(underlying)g
(pac)-5 b(k)c(age)57 b(whic)-5 b(h)57 b(is)h(created)e(according)h(to)f
(the)581 8008 y(clauses)70 b(of)e(the)h Fl(define-structure)i
Fp(form.)115 b(Eac)-5 b(h)69 b(structure)f(has)i(an)f(in)-5
b(terface)68 b(that)581 8207 y(sp)5 b(eci\014es)64 b(whic)-5
b(h)65 b(bindings)g(in)f(the)f(structure's)h(underlying)g(pac)-5
b(k)c(age)63 b(can)h(b)5 b(e)63 b(seen)h(via)581 8407
y(that)55 b(structure)g(in)h(other)f(pac)-5 b(k)c(ages.)830
8618 y(An)42 b Fl(open)h Fp(clause)g(sp)5 b(eci\014es)42
b(whic)-5 b(h)43 b(structures)f(will)h(b)5 b(e)42 b(op)5
b(ened)42 b(up)g(for)g(use)h(inside)g(the)581 8817 y(new)50
b(pac)-5 b(k)c(age.)72 b(A)-5 b(t)50 b(least)g(one)h(structure)f(m)-5
b(ust)51 b(b)5 b(e)50 b(sp)5 b(eci\014ed)51 b(or)f(else)g(it)g(will)h
(b)5 b(e)50 b(imp)5 b(ossi-)581 9016 y(ble)42 b(to)f(write)g(an)-5
b(y)41 b(useful)h(programs)h(inside)f(the)f(pac)-5 b(k)c(age,)44
b(since)e Fl(define)p Fp(,)k Fl(lambda)p Fp(,)f Fl(cons)p
Fp(,)581 9215 y(etc.)65 b(will)h(b)5 b(e)66 b(una)-5
b(v)c(ailable.)105 b(P)-5 b(ac)g(k)c(ages)67 b(t)-5 b(ypically)65
b(include)h Fl(scheme)p Fp(,)k(whic)-5 b(h)66 b(exp)5
b(orts)65 b(all)581 9415 y(bindings)46 b(appropriate)f(to)f(Revised)
2873 9354 y Fj(5)2992 9415 y Fp(Sc)-5 b(heme,)48 b(in)d(an)f
Fl(open)i Fp(clause.)70 b(F)-14 b(or)45 b(building)h(struc-)581
9614 y(tures)69 b(that)e(exp)5 b(ort)67 b(structures,)72
b(there)c(is)h(a)f Fl(defpackage)i Fp(pac)-5 b(k)c(age)68
b(that)f(exp)5 b(orts)68 b(the)581 9813 y(op)5 b(erators)55
b(of)h(the)f(con\014guration)h(language.)74 b(Man)-5
b(y)56 b(other)f(structures,)h(suc)-5 b(h)57 b(as)f(record)581
10012 y(and)g(hash)g(table)f(facilities,)h(are)f(also)h(a)-5
b(v)c(ailable)56 b(in)f(the)g(Sc)-5 b(heme)56 b(48)g(implemen)-5
b(tation.)3362 10511 y(19)p eop end
%%Page: 20 28
TeXDict begin 20 27 bop 1577 1020 a Fg(h)p Fp(con\014guration)p
Fg(i)56 b(\000)-28 b(!)55 b(h)p Fp(de\014nition)p Fg(i)3847
959 y Fe(\003)1677 1219 y Fg(h)p Fp(de\014nition)p Fg(i)g(\000)-27
b(!)199 b Fl(\(define-structure)90 b Fg(h)p Fp(name)p
Fg(i)d(h)p Fp(in)-5 b(terface)p Fg(i)86 b(h)p Fp(clause)p
Fg(i)6582 1159 y Fe(\003)6659 1219 y Fl(\))2766 1418
y Fg(j)199 b Fl(\(define-structures)90 b(\(\()p Fg(h)p
Fp(name)p Fg(i)d(h)p Fp(in)-5 b(terface)p Fg(i)o Fl(\))6280
1358 y Fe(\003)6356 1418 y Fl(\))88 b Fg(h)p Fp(clause)p
Fg(i)7094 1358 y Fe(\003)7171 1418 y Fl(\))2766 1617
y Fg(j)199 b Fl(\(define-interface)90 b Fg(h)p Fp(name)p
Fg(i)d(h)p Fp(in)-5 b(terface)p Fg(i)n Fl(\))2766 1817
y Fg(j)199 b Fl(\(define-syntax)90 b Fg(h)p Fp(name)p
Fg(i)c(h)p Fp(transformer-sp)5 b(ec)p Fg(i)p Fl(\))1677
2016 y Fg(h)p Fp(clause)p Fg(i)55 b(\000)-28 b(!)200
b Fl(\(open)88 b Fg(h)p Fp(structure)p Fg(i)4072 1956
y Fe(\003)4148 2016 y Fl(\))2517 2215 y Fg(j)200 b Fl(\(access)88
b Fg(h)p Fp(name)p Fg(i)3977 2155 y Fe(\003)4053 2215
y Fl(\))2517 2414 y Fg(j)200 b Fl(\(begin)88 b Fg(h)p
Fp(program)p Fg(i)p Fl(\))2517 2614 y Fg(j)200 b Fl(\(files)88
b Fg(h)p Fp(\014lesp)5 b(ec)p Fg(i)4024 2553 y Fe(\003)4101
2614 y Fl(\))2517 2813 y Fg(j)200 b Fl(\(optimize)89
b Fg(h)p Fp(optimize-sp)5 b(ec)p Fg(i)4747 2753 y Fe(\003)4823
2813 y Fl(\))2517 3012 y Fg(j)200 b Fl(\(for-syntax)89
b Fg(h)p Fp(clause)p Fg(i)4372 2952 y Fe(\003)4449 3012
y Fl(\))1677 3211 y Fg(h)p Fp(in)-5 b(terface)p Fg(i)54
b(\000)-27 b(!)199 b Fl(\(export)88 b Fg(h)p Fp(item)p
Fg(i)4096 3151 y Fe(\003)4173 3211 y Fl(\))2701 3411
y Fg(j)200 b(h)p Fp(name)p Fg(i)2701 3610 y(j)g Fl
(\(compound-interface)90 b Fg(h)p Fp(in)-5 b(terface)p
Fg(i)5438 3550 y Fe(\003)5514 3610 y Fl(\))1677 3809
y Fg(h)p Fp(item)p Fg(i)54 b(\000)-27 b(!)111 b(h)p Fp(name)p
Fg(i)3033 4008 y(j)199 b Fl(\()p Fg(h)p Fp(name)p Fg(i)87
b(h)p Fp(t)-5 b(yp)5 b(e)p Fg(i)o Fl(\))3033 4208 y Fg(j)199
b Fl(\(\()p Fg(h)p Fp(name)p Fg(i)3969 4147 y Fe(\003)4046
4208 y Fl(\))87 b Fg(h)p Fp(t)-5 b(yp)5 b(e)p Fg(i)n
Fl(\))1677 4407 y Fg(h)p Fp(structure)p Fg(i)54 b(\000)-27
b(!)199 b(h)p Fp(name)p Fg(i)2740 4606 y(j)g Fl(\(modify)88
b Fg(h)p Fp(structure)p Fg(i)f(h)p Fp(mo)5 b(di\014er)p
Fg(i)5280 4546 y Fe(\003)5357 4606 y Fl(\))2740 4805
y Fg(j)199 b Fl(\(subset)88 b Fg(h)p Fp(structure)p Fg(i)f
Fl(\()p Fg(h)p Fp(name)p Fg(i)5159 4745 y Fe(\003)5236
4805 y Fl(\)\))2740 5005 y Fg(j)199 b Fl(\(with-prefix)89
b Fg(h)p Fp(structure)p Fg(i)d(h)p Fp(name)p Fg(i)p Fl(\))1677
5204 y Fg(h)p Fp(mo)5 b(di\014er)p Fg(i)55 b(\000)-28
b(!)200 b Fl(\(expose)88 b Fg(h)p Fp(name)p Fg(i)4138
5144 y Fe(\003)4214 5204 y Fl(\))2678 5403 y Fg(j)200
b Fl(\(hide)88 b Fg(h)p Fp(name)p Fg(i)3963 5343 y Fe(\003)4040
5403 y Fl(\))2678 5602 y Fg(j)200 b Fl(\(rename)88 b(\()p
Fg(h)p Fp(name)p Fg(i)4225 5627 y Fj(0)4387 5602 y Fg(h)p
Fp(name)p Fg(i)4903 5627 y Fj(1)4978 5602 y Fl(\))5065
5542 y Fe(\003)5141 5602 y Fl(\))2678 5802 y Fg(j)200
b Fl(\(alias)88 b(\()p Fg(h)p Fp(name)p Fg(i)4138 5827
y Fj(0)4299 5802 y Fg(h)p Fp(name)p Fg(i)4816 5827 y
Fj(1)4890 5802 y Fl(\))4977 5741 y Fe(\003)5054 5802
y Fl(\))2678 6001 y Fg(j)200 b Fl(\(prefix)88 b Fg(h)p
Fp(name)p Fg(i)p Fl(\))2899 6359 y Fp(Figure)56 b(4.1:)74
b(The)55 b(con\014guration)h(language.)1727 6889 y(The)41
b Fl(modify)p Fp(,)k Fl(subset)p Fp(,)g(and)c Fl(prefix)h
Fp(forms)f(pro)5 b(duce)41 b(new)g(views)g(on)g(existing)g(struc-)1478
7088 y(tures)62 b(b)-5 b(y)62 b(renaming)h(or)f(hiding)i(exp)5
b(orted)61 b(names.)95 b Fl(Subset)63 b Fp(returns)f(a)g(new)h
(structure)1478 7288 y(that)48 b(exp)5 b(orts)49 b(only)g(the)g(listed)
h(names)g(from)f(its)h Fg(h)p Fp(structure)p Fg(i)e Fp(argumen)-5
b(t.)72 b Fl(With-prefix)1478 7487 y Fp(returns)49 b(a)f(new)h
(structure)g(that)f(adds)h Fg(h)p Fp(pre\014x)p Fg(i)f
Fp(to)g(eac)-5 b(h)49 b(of)f(the)h(names)g(exp)5 b(orted)48
b(b)-5 b(y)49 b(the)1478 7686 y Fg(h)p Fp(structure)p
Fg(i)54 b Fp(argumen)-5 b(t.)75 b(F)-14 b(or)56 b(example,)f(if)g
(structure)g Fl(s)h Fp(exp)5 b(orts)55 b Fl(a)g Fp(and)h
Fl(b)p Fp(,)g(then)1478 8019 y Fl(\(subset)88 b(s)g(\(a\)\))1478
8351 y Fp(exp)5 b(orts)55 b(only)i Fl(a)f Fp(and)1478
8684 y Fl(\(with-prefix)89 b(s)e(p/\))1478 9016 y Fp(exp)5
b(orts)55 b Fl(a)g Fp(as)h Fl(p/a)g Fp(and)g Fl(b)f Fp(as)h
Fl(p/b)p Fp(.)1727 9215 y(Both)i Fl(subset)h Fp(and)g
Fl(with-prefix)h Fp(are)e(simple)i(macros)f(that)f(expand)g(in)-5
b(to)59 b(uses)h(of)1478 9415 y Fl(modify)p Fp(,)83 b(a)77
b(more)g(general)g(renaming)h(form.)139 b(In)77 b(a)g
Fl(modify)h Fp(structure)e(sp)5 b(eci\014cation)1478
9614 y(the)51 b Fg(h)p Fp(command)p Fg(i)p Fp(s)h(are)f(applied)i(to)e
(the)g(names)h(exp)5 b(orted)51 b(b)-5 b(y)51 b Fg(h)p
Fp(structure)p Fg(i)g Fp(to)g(pro)5 b(duce)51 b(a)1478
9813 y(new)62 b(set)f(of)h(names)h(for)f(the)f Fg(h)p
Fp(structure)p Fg(i)o Fp('s)i(bindings.)95 b Fl(Expose)63
b Fp(mak)-5 b(es)62 b(only)g(the)g(listed)1478 10012
y(names)55 b(visible.)75 b Fl(Hide)55 b Fp(mak)-5 b(es)56
b(all)f(but)f(the)h(listed)g(names)h(visible.)74 b Fl(Rename)56
b Fp(mak)-5 b(es)55 b(eac)-5 b(h)4259 10511 y(20)p eop
end
%%Page: 21 29
TeXDict begin 21 28 bop 581 1046 a Fg(h)p Fp(name)p Fg(i)1098
1071 y Fj(0)1214 1046 y Fp(visible)42 b(as)g Fg(h)p Fp(name)p
Fg(i)2420 1071 y Fj(1)2536 1046 y Fp(name)g(and)g(not)g(visible)g(as)g
Fg(h)p Fp(name)p Fg(i)4762 1071 y Fj(0)4878 1046 y Fp(,)j(while)c
Fl(alias)i Fp(mak)-5 b(es)581 1245 y(eac)g(h)51 b Fg(h)p
Fp(name)p Fg(i)1467 1270 y Fj(0)1592 1245 y Fp(visible)g(as)g(b)5
b(oth)51 b Fg(h)p Fp(name)p Fg(i)3203 1270 y Fj(0)3328
1245 y Fp(and)h Fg(h)p Fp(name)p Fg(i)4163 1270 y Fj(1)4238
1245 y Fp(.)72 b Fl(Prefix)52 b Fp(adds)g Fg(h)p Fp(name)p
Fg(i)e Fp(to)g(the)581 1445 y(b)5 b(eginning)57 b(of)f(eac)-5
b(h)56 b(exp)5 b(orted)55 b(name.)77 b(The)56 b(mo)5
b(di\014ers)57 b(are)f(applied)h(from)f(righ)-5 b(t)57
b(to)e(left.)581 1644 y(Th)-5 b(us)581 2017 y Fl(\(modify)89
b(scheme)f(\(prefix)g(foo/\))g(\(rename)h(\(car)e(bus\)\)\)\))581
2380 y Fp(mak)-5 b(es)56 b Fl(car)g Fp(a)-5 b(v)c(ailable)56
b(as)g Fl(foo/bus)p Fp(..)830 2589 y(The)g(pac)-5 b(k)c(age's)56
b(b)5 b(o)g(dy)55 b(is)i(sp)5 b(eci\014ed)56 b(b)-5 b(y)56
b Fl(begin)h Fp(and/or)f Fl(files)h Fp(clauses.)76 b
Fl(begin)57 b Fp(and)581 2788 y Fl(files)52 b Fp(ha)-5
b(v)g(e)52 b(the)e(same)i(seman)-5 b(tics,)53 b(except)d(that)h(for)f
Fl(begin)i Fp(the)f(text)e(is)j(giv)-5 b(en)51 b(directly)581
2988 y(in)64 b(the)f(pac)-5 b(k)c(age)62 b(de\014nition,)k(while)e(for)
f Fl(files)h Fp(the)f(text)f(is)h(stored)h(somewhere)f(in)h(the)581
3187 y(\014le)75 b(system.)134 b(The)75 b(b)5 b(o)g(dy)75
b(consists)h(of)f(a)g(Sc)-5 b(heme)76 b(program,)81 b(that)74
b(is,)81 b(a)75 b(sequence)g(of)581 3386 y(de\014nitions)55
b(and)g(expressions)g(to)e(b)5 b(e)54 b(ev)-9 b(aluated)53
b(in)h(order.)74 b(In)54 b(practice,)f(w)-5 b(e)54 b(alw)-5
b(a)g(ys)55 b(use)581 3585 y Fl(files)h Fp(in)g(preference)f(to)g
Fl(begin)p Fp(;)h Fl(begin)g Fp(exists)g(mainly)g(for)f(exp)5
b(ository)54 b(purp)5 b(oses.)830 3795 y(A)83 b(name's)h(imp)5
b(orted)83 b(binding)h(ma)-5 b(y)84 b(b)5 b(e)82 b(lexically)h(o)-5
b(v)g(erridden)84 b(or)f Fo(shadowe)-8 b(d)82 b Fp(b)-5
b(y)581 3994 y(de\014ning)78 b(the)f(name)h(using)g(a)f(de\014ning)h
(form)g(suc)-5 b(h)78 b(as)g Fl(define)g Fp(or)f Fl(define-syntax)p
Fp(.)581 4193 y(This)j(will)f(create)f(a)h(new)g(binding)i(without)d
(ha)-5 b(ving)80 b(an)-5 b(y)79 b(e\013ect)f(on)h(the)g(binding)h(in)
581 4393 y(the)63 b(op)5 b(ened)62 b(pac)-5 b(k)c(age.)97
b(F)-14 b(or)63 b(example,)i(one)e(can)g(do)g Fl(\(define)88
b(car)g('chevy\))64 b Fp(without)581 4592 y(a\013ecting)55
b(the)g(binding)i(of)e(the)g(name)g Fl(car)h Fp(in)g(the)f
Fl(scheme)h Fp(pac)-5 b(k)c(age.)830 4801 y(Assignmen)k(ts)68
b(\(using)f Fl(set!)p Fp(\))f(to)g(imp)5 b(orted)66 b(and)g
(unde\014ned)h(v)-9 b(ariables)66 b(are)g(not)g(al-)581
5000 y(lo)-5 b(w)g(ed.)119 b(In)70 b(order)g(to)f Fl(set!)i
Fp(a)f(top-lev)-5 b(el)70 b(v)-9 b(ariable,)73 b(the)c(pac)-5
b(k)c(age)70 b(b)5 b(o)g(dy)69 b(m)-5 b(ust)71 b(con)-5
b(tain)581 5200 y(a)75 b Fl(define)h Fp(form)f(de\014ning)g(that)f(v)-9
b(ariable.)132 b(Applied)75 b(to)g(bindings)h(from)f(the)g
Fl(scheme)581 5399 y Fp(structure,)64 b(this)f(restriction)f(is)h
(compatible)g(with)f(the)g(requiremen)-5 b(ts)63 b(of)f(the)g(Revised)
6235 5339 y Fj(5)581 5598 y Fp(Sc)-5 b(heme)56 b(rep)5
b(ort.)830 5808 y(It)47 b(is)g(an)g(error)g(for)g(t)-5
b(w)g(o)47 b(of)g(a)g(pac)-5 b(k)c(age's)47 b(op)5 b(ened)47
b(structures)g(to)g(exp)5 b(ort)45 b(t)-5 b(w)g(o)48
b(di\013eren)-5 b(t)581 6007 y(bindings)75 b(for)f(the)f(same)h(name.)
128 b(Ho)-5 b(w)g(ev)g(er,)78 b(the)73 b(curren)-5 b(t)74
b(implemen)-5 b(tation)74 b(do)5 b(es)74 b(not)581 6206
y(c)-5 b(hec)g(k)70 b(for)h(this)f(situation;)78 b(a)71
b(name's)g(binding)h(is)e(alw)-5 b(a)g(ys)72 b(tak)-5
b(en)70 b(from)g(the)g(structure)581 6405 y(that)55 b(is)h(listed)g
(\014rst)f(within)h(the)f Fl(open)h Fp(clause.)74 b(This)56
b(ma)-5 b(y)56 b(b)5 b(e)55 b(\014xed)g(in)h(the)f(future.)830
6615 y(File)f(names)g(in)g(a)f Fl(files)h Fp(clause)g(can)f(b)5
b(e)53 b(sym)-5 b(b)5 b(ols,)55 b(strings,)g(or)f(lists)g(\(Maclisp-st)
-5 b(yle)581 6814 y(\\namelists"\).)148 b(A)79 b(\\)p
Fl(.scm)p Fp(")h(\014le)g(t)-5 b(yp)5 b(e)79 b(su\016x)i(is)f(assumed.)
148 b(Sym)-5 b(b)5 b(ols)81 b(are)f(con)-5 b(v)g(erted)581
7013 y(to)62 b(\014le)h(names)g(b)-5 b(y)63 b(con)-5
b(v)g(erting)63 b(to)f(upp)5 b(er)62 b(or)h(lo)-5 b(w)g(er)63
b(case)f(as)h(appropriate)g(for)f(the)g(host)581 7213
y(op)5 b(erating)38 b(system.)69 b(A)38 b(namelist)h(is)g(an)g(op)5
b(erating-system-indep)g(enden)-5 b(t)39 b(w)-5 b(a)g(y)39
b(to)f(sp)5 b(ecify)581 7412 y(a)64 b(\014le)g(obtained)h(from)f(a)g
(sub)5 b(directory)-14 b(.)99 b(F)-14 b(or)65 b(example,)h(the)e
(namelist)h Fl(\(rts)87 b(record\))581 7611 y Fp(sp)5
b(eci\014es)56 b(the)f(\014le)h Fl(record.scm)h Fp(in)e(the)g
Fl(rts)h Fp(sub)5 b(directory)-14 b(.)830 7821 y(If)42
b(the)f Fl(define-structure)j Fp(form)e(w)-5 b(as)42
b(itself)g(obtained)g(from)f(a)h(\014le,)j(then)c(\014le)h(names)581
8020 y(in)59 b Fl(files)h Fp(clauses)g(are)e(in)-5 b(terpreted)59
b(relativ)-5 b(e)58 b(to)g(the)h(directory)f(in)h(whic)-5
b(h)59 b(the)f(\014le)h(con-)581 8219 y(taining)69 b(the)f
Fl(define-structure)j Fp(form)e(w)-5 b(as)69 b(found.)114
b(Y)-14 b(ou)68 b(can't)h(at)f(presen)-5 b(t)69 b(put)f(an)581
8418 y(absolute)56 b(path)f(name)h(in)g(the)f Fl(files)h
Fp(list.)581 9022 y Fi(4.3)270 b(In)-7 b(terfaces)581
9404 y Fl(define-interface)830 9614 y Fp(An)47 b(in)-5
b(terface)46 b(can)g(b)5 b(e)46 b(though)-5 b(t)47 b(of)g(as)g(the)f(t)
-5 b(yp)5 b(e)46 b(of)g(a)h(structure.)70 b(In)47 b(its)g(basic)g(form)
g(it)581 9813 y(is)j(just)e(a)h(list)g(of)g(v)-9 b(ariable)48
b(names,)k(written)c Fl(\(export)88 b Fo(name)100 b Fl(...\))p
Fp(.)72 b(Ho)-5 b(w)g(ev)g(er,)51 b(in)e(place)581 10012
y(of)56 b(a)g(name)g(one)g(ma)-5 b(y)56 b(write)f Fl(\()p
Fo(name)100 b(typ)-8 b(e)12 b Fl(\))p Fp(,)57 b(indicating)f(the)f(t)-5
b(yp)5 b(e)56 b(of)68 b Fo(name)12 b Fp('s)57 b(binding.)3362
10511 y(21)p eop end
%%Page: 22 30
TeXDict begin 22 29 bop 1478 1046 a Fp(The)53 b(t)-5
b(yp)5 b(e)53 b(\014eld)h(is)g(optional,)g(except)f(that)f(exp)5
b(orted)53 b(macros)h(m)-5 b(ust)55 b(b)5 b(e)53 b(indicated)g(with)
1478 1245 y(t)-5 b(yp)5 b(e)54 b Fl(:syntax)p Fp(.)1727
1445 y(In)-5 b(terfaces)55 b(ma)-5 b(y)56 b(b)5 b(e)55
b(either)g(anon)-5 b(ymous,)57 b(as)f(in)g(the)f(example)g(in)h(the)f
(in)-5 b(tro)5 b(duction,)1478 1644 y(or)55 b(they)g(ma)-5
b(y)56 b(b)5 b(e)55 b(giv)-5 b(en)55 b(names)h(b)-5 b(y)56
b(a)f Fl(define-interface)j Fp(form,)e(for)f(example)1478
1949 y Fl(\(define-interface)90 b(foo-interface)f(\(export)g(a)e(c)g
(cons\)\))1478 2148 y(\(define-structure)j(foo)e(foo-interface)h(...\))
1478 2453 y Fp(In)46 b(principle,)j(in)-5 b(terfaces)47
b(needn't)f(ev)-5 b(er)46 b(b)5 b(e)46 b(named.)72 b(If)46
b(an)g(in)-5 b(terface)46 b(had)h(to)f(b)5 b(e)46 b(giv)-5
b(en)47 b(at)1478 2653 y(the)h(p)5 b(oin)-5 b(t)48 b(of)g(a)g
(structure's)g(use)h(as)g(w)-5 b(ell)48 b(as)h(at)e(the)h(p)5
b(oin)-5 b(t)48 b(of)g(its)h(de\014nition,)h(it)e(w)-5
b(ould)49 b(b)5 b(e)1478 2852 y(imp)g(ortan)-5 b(t)54
b(to)g(name)h(in)-5 b(terfaces)55 b(in)f(order)h(to)f(a)-5
b(v)g(oid)55 b(ha)-5 b(ving)55 b(to)f(write)g(them)g(out)h(t)-5
b(wice,)1478 3051 y(with)55 b(risk)h(of)f(mismatc)-5
b(h)56 b(should)h(the)e(in)-5 b(terface)55 b(ev)-5 b(er)55
b(c)-5 b(hange.)74 b(But)55 b(they)g(don't.)1727 3250
y(Still,)h(there)e(are)i(sev)-5 b(eral)55 b(reasons)i(to)e(use)g
Fl(define-interface)p Fp(:)1681 3555 y(1.)83 b(It)60
b(is)h(imp)5 b(ortan)-5 b(t)61 b(to)f(separate)g(the)g(in)-5
b(terface)60 b(de\014nition)h(from)g(the)f(pac)-5 b(k)c(age)60
b(def-)1893 3755 y(initions)73 b(when)g(there)e(are)h(m)-5
b(ultiple)74 b(distinct)e(structures)g(that)g(ha)-5 b(v)g(e)73
b(the)f(same)1893 3954 y(in)-5 b(terface)55 b(|)g(that)g(is,)h(m)-5
b(ultiple)56 b(implemen)-5 b(tations)57 b(of)e(the)g(same)h
(abstraction.)1681 4273 y(2.)83 b(It)66 b(is)i(conceptually)e(cleaner,)
k(and)d(often)f(useful)h(for)g(do)5 b(cumen)-5 b(tation)67
b(purp)5 b(oses,)1893 4472 y(to)69 b(separate)h(a)g(mo)5
b(dule's)70 b(sp)5 b(eci\014cation)70 b(\(in)-5 b(terface\))69
b(from)g(its)h(implemen)-5 b(tation)1893 4671 y(\(pac)g(k)c(age\).)1681
4990 y(3.)83 b(Our)d(exp)5 b(erience)79 b(is)h(that)g(con\014gurations)
h(that)e(are)h(separated)g(in)-5 b(to)80 b(in)-5 b(terface)1893
5189 y(de\014nitions)81 b(and)g(pac)-5 b(k)c(age)80 b(de\014nitions)h
(are)f(easier)g(to)g(read;)92 b(the)80 b(long)h(lists)g(of)1893
5388 y(exp)5 b(orted)54 b(bindings)j(just)f(get)e(in)i(the)f(w)-5
b(a)g(y)56 b(most)g(of)f(the)g(time.)1727 5693 y(The)63
b Fl(compound-interface)i Fp(op)5 b(erator)62 b(forms)i(an)f(in)-5
b(terface)62 b(that)g(is)i(the)e(union)i(of)1478 5893
y(t)-5 b(w)g(o)55 b(or)h(more)f(comp)5 b(onen)-5 b(t)56
b(in)-5 b(terfaces.)74 b(F)-14 b(or)56 b(example,)1478
6198 y Fl(\(define-interface)90 b(bar-interface)1652
6397 y(\(compound-interface)h(foo-interface)e(\(export)f(mumble\)\)\))
1478 6702 y Fp(de\014nes)56 b Fl(bar-interface)i Fp(to)d(b)5
b(e)55 b Fl(foo-interface)i Fp(with)e(the)g(name)h Fl(mumble)g
Fp(added.)1478 7245 y Fi(4.4)269 b(Macros)1478 7609 y
Fp(Hygienic)65 b(macros,)j(as)e(describ)5 b(ed)66 b(in)g([2,)g(3],)i
(are)e(implemen)-5 b(ted.)105 b(Structures)66 b(ma)-5
b(y)66 b(ex-)1478 7808 y(p)5 b(ort)54 b(macros;)h(auxiliary)f(names)i
(in)-5 b(tro)5 b(duced)54 b(in)-5 b(to)55 b(the)f(expansion)h(are)f
(resolv)-5 b(ed)55 b(in)g(the)1478 8007 y(en)-5 b(vironmen)g(t)56
b(of)f(the)g(macro's)h(de\014nition.)1727 8207 y(F)-14
b(or)60 b(example,)g(the)f Fl(scheme)h Fp(structure's)g
Fl(delay)g Fp(macro)f(is)h(de\014ned)g(b)-5 b(y)59 b(the)g(rewrite)1478
8406 y(rule)1478 8711 y Fl(\(delay)88 b Fo(exp)10 b Fl(\))175
b Fp(=)-27 b Fg(\))174 b Fl(\(make-promise)90 b(\(lambda)e(\(\))f
Fo(exp)10 b Fl(\)\).)1478 9016 y Fp(The)38 b(v)-9 b(ariable)38
b Fl(make-promise)i Fp(is)f(de\014ned)g(in)f(the)g Fl(scheme)h
Fp(structure's)g(underlying)g(pac)-5 b(k-)1478 9215 y(age,)63
b(but)e(is)h(not)g(exp)5 b(orted.)91 b(A)61 b(use)h(of)f(the)h
Fl(delay)g Fp(macro,)h(ho)-5 b(w)g(ev)g(er,)64 b(alw)-5
b(a)g(ys)63 b(accesses)1478 9415 y(the)49 b(correct)f(de\014nition)i
(of)f Fl(make-promise)p Fp(.)74 b(Similarly)-14 b(,)52
b(the)c Fl(case)i Fp(macro)g(expands)g(in)-5 b(to)1478
9614 y(uses)56 b(of)g Fl(cond)p Fp(,)g Fl(eqv?)p Fp(,)h(and)f(so)g(on.)
75 b(These)56 b(names)h(are)e(exp)5 b(orted)55 b(b)-5
b(y)56 b Fl(scheme)p Fp(,)h(but)f(their)1478 9813 y(correct)63
b(bindings)j(will)f(b)5 b(e)64 b(found)g(ev)-5 b(en)64
b(if)h(they)e(are)h(shado)-5 b(w)g(ed)66 b(b)-5 b(y)65
b(de\014nitions)g(in)g(the)1478 10012 y(clien)-5 b(t)55
b(pac)-5 b(k)c(age.)4259 10511 y(22)p eop end
%%Page: 23 31
TeXDict begin 23 30 bop 581 1046 a Fi(4.5)270 b(Higher-order)90
b(mo)7 b(dules)581 1410 y Fp(There)61 b(are)f Fl(define-module)j
Fp(and)f Fl(define)g Fp(forms)f(for)g(de\014ning)g(mo)5
b(dules)62 b(that)e(are)h(in-)581 1609 y(tended)i(to)g(b)5
b(e)63 b(instan)-5 b(tiated)63 b(m)-5 b(ultiple)64 b(times.)98
b(But)63 b(these)g(are)g(prett)-5 b(y)62 b(kludgey)h(|)g(for)581
1808 y(example,)57 b(compiled)g(co)5 b(de)56 b(isn't)h(shared)h(b)5
b(et)-5 b(w)g(een)56 b(the)g(instan)-5 b(tiations)58
b(|)f(so)g(w)-5 b(e)56 b(w)-5 b(on't)581 2008 y(describ)5
b(e)51 b(them)g(y)-5 b(et.)72 b(If)50 b(y)-5 b(ou)51
b(m)-5 b(ust)52 b(kno)-5 b(w,)52 b(\014gure)g(it)e(out)h(from)g(the)f
(follo)-5 b(wing)52 b(grammar.)1101 2285 y Fg(h)p Fp(de\014nition)p
Fg(i)j(\000)-28 b(!)200 b Fl(\(define-module)89 b(\()p
Fg(h)p Fp(name)p Fg(i)e Fl(\()p Fg(h)p Fp(name)p Fg(i)g(h)p
Fp(in)-5 b(terface)p Fg(i)o Fl(\))5959 2224 y Fe(\003)6035
2285 y Fl(\))2767 2484 y Fg(h)p Fp(de\014nition)p Fg(i)3578
2424 y Fe(\003)2767 2683 y Fg(h)p Fp(name)p Fg(i)o Fl(\))2189
2882 y Fg(j)200 b Fl(\(define)88 b Fg(h)p Fp(name)p Fg(i)f
Fl(\()p Fg(h)p Fp(name)p Fg(i)g(h)p Fp(name)p Fg(i)4943
2822 y Fe(\003)5019 2882 y Fl(\)\))581 3366 y Fi(4.6)270
b(Compiling)91 b(and)f(linking)581 3729 y Fp(Sc)-5 b(heme)49
b(48)f(has)g(a)g(static)g(link)-5 b(er)48 b(that)f(pro)5
b(duces)49 b(stand-alone)g(heap)f(images)h(from)f(mo)5
b(d-)581 3929 y(ule)53 b(descriptions.)74 b(The)53 b(programmer)g(sp)5
b(eci\014es)53 b(a)g(particular)f(pro)5 b(cedure)53 b(in)g(a)f
(particu-)581 4128 y(lar)60 b(structure)f(to)g(b)5 b(e)59
b(the)g(image's)h(startup)g(pro)5 b(cedure)59 b(\(en)-5
b(try)58 b(p)5 b(oin)-5 b(t\),)61 b(and)e(the)g(link)-5
b(er)581 4327 y(traces)56 b(dep)5 b(endency)56 b(links)h(as)g(giv)-5
b(en)57 b(b)-5 b(y)57 b Fl(open)g Fp(and)g Fl(access)g
Fp(clauses)h(to)e(determine)g(the)581 4526 y(comp)5 b(osition)56
b(of)f(the)g(heap)h(image.)830 4726 y(There)46 b(is)h(not)f(curren)-5
b(tly)46 b(an)-5 b(y)47 b(pro)-5 b(vision)47 b(for)f(separate)g
(compilation;)k(the)c(only)g(input)581 4925 y(to)i(the)h(static)f(link)
-5 b(er)49 b(is)g(source)h(co)5 b(de.)71 b(Ho)-5 b(w)g(ev)g(er,)50
b(it)e(will)h(not)g(b)5 b(e)48 b(di\016cult)h(to)g(implemen)-5
b(t)581 5124 y(separate)46 b(compilation.)72 b(The)46
b(unit)g(of)g(compilation)g(is)h(one)f(mo)5 b(dule)47
b(\(not)e(one)h(\014le\).)71 b(An)-5 b(y)581 5323 y(op)5
b(ened)38 b(or)f(accessed)h(structures)g(from)g(whic)-5
b(h)38 b(macros)h(are)e(obtained)h(m)-5 b(ust)39 b(b)5
b(e)37 b(pro)5 b(cessed)581 5523 y(to)56 b(the)h(exten)-5
b(t)55 b(of)i(extracting)e(its)i(macro)g(de\014nitions.)79
b(The)57 b(compiler)g(kno)-5 b(ws)57 b(from)g(the)581
5722 y(in)-5 b(terface)70 b(of)f(an)i(op)5 b(ened)70
b(or)g(accessed)g(structure)g(whic)-5 b(h)71 b(of)e(its)i(exp)5
b(orts)69 b(are)h(macros.)581 5921 y(Except)c(for)g(macros,)71
b(a)66 b(mo)5 b(dule)68 b(ma)-5 b(y)67 b(b)5 b(e)66 b(compiled)h
(without)g(an)-5 b(y)67 b(kno)-5 b(wledge)67 b(of)f(the)581
6120 y(implemen)-5 b(tation)66 b(of)e(its)h(op)5 b(ened)65
b(and)g(accessed)g(structures.)102 b(Ho)-5 b(w)g(ev)g(er,)67
b(in)-5 b(ter-mo)5 b(dule)581 6320 y(optimization)56
b(ma)-5 b(y)56 b(b)5 b(e)55 b(a)-5 b(v)c(ailable)55 b(as)h(an)g
(option.)830 6519 y(The)45 b(main)h(di\016cult)-5 b(y)46
b(with)f(separate)h(compilation)f(is)h(resolution)g(of)f(auxiliary)g
(bind-)581 6718 y(ings)55 b(in)-5 b(tro)5 b(duced)54
b(in)-5 b(to)54 b(macro)g(expansions.)74 b(The)54 b(mo)5
b(dule)54 b(compiler)g(m)-5 b(ust)55 b(transmit)f(to)581
6917 y(the)j(loader)g(or)g(link)-5 b(er)57 b(the)f(searc)-5
b(h)58 b(path)f(b)-5 b(y)57 b(whic)-5 b(h)58 b(suc)-5
b(h)58 b(bindings)g(are)f(to)f(b)5 b(e)57 b(resolv)-5
b(ed.)581 7117 y(In)56 b(the)f(case)h(of)g(the)f Fl(delay)i
Fp(macro's)f(auxiliary)g Fl(make-promise)i Fp(\(see)d(example)h(ab)5
b(o)-5 b(v)g(e\),)581 7316 y(the)53 b(loader)h(or)g(link)-5
b(er)54 b(needs)g(to)f(kno)-5 b(w)54 b(that)f(the)h(desired)g(binding)h
(of)e Fl(make-promise)j Fp(is)581 7515 y(the)j(one)f(apparen)-5
b(t)60 b(in)f Fl(delay)p Fp('s)h(de\014ning)g(pac)-5
b(k)c(age,)60 b(not)e(in)h(the)g(pac)-5 b(k)c(age)58
b(b)5 b(eing)59 b(loaded)581 7714 y(or)d(link)-5 b(ed.)581
8254 y Fi(4.7)270 b(Seman)-7 b(tics)89 b(of)h(con\014guration)h(m)-7
b(utation)581 8618 y Fp(During)57 b(program)g(dev)-5
b(elopmen)g(t)57 b(it)f(is)h(often)f(desirable)h(to)f(mak)-5
b(e)56 b(c)-5 b(hanges)58 b(to)d(pac)-5 b(k)c(ages)581
8817 y(and)52 b(in)-5 b(terfaces.)73 b(In)52 b(static)f(languages)h(it)
f(ma)-5 b(y)52 b(b)5 b(e)52 b(necessary)f(to)g(recompile)h(and)g
(re-link)581 9016 y(a)44 b(program)h(in)g(order)f(for)g(suc)-5
b(h)45 b(c)-5 b(hanges)45 b(to)f(b)5 b(e)43 b(re\015ected)h(in)g(a)g
(running)i(system.)70 b(Ev)-5 b(en)44 b(in)581 9215 y(in)-5
b(teractiv)g(e)37 b(Common)i(Lisp)f(implemen)-5 b(tations,)43
b(a)38 b(c)-5 b(hange)38 b(to)f(a)h(pac)-5 b(k)c(age's)38
b(exp)5 b(orts)37 b(often)581 9415 y(requires)70 b(reloading)g(clien)-5
b(ts)70 b(that)f(ha)-5 b(v)g(e)70 b(already)f(men)-5
b(tioned)71 b(names)f(whose)g(bindings)581 9614 y(c)-5
b(hange.)127 b(Once)73 b Fl(read)h Fp(resolv)-5 b(es)74
b(a)f(use)g(of)g(a)g(name)g(to)g(a)g(sym)-5 b(b)5 b(ol,)78
b(that)72 b(resolution)i(is)581 9813 y(\014xed,)j(so)72
b(a)g(c)-5 b(hange)73 b(in)f(the)g(w)-5 b(a)g(y)73 b(that)e(a)h(name)h
(resolv)-5 b(es)73 b(to)f(a)g(sym)-5 b(b)5 b(ol)73 b(can)f(only)g(b)5
b(e)581 10012 y(re\015ected)55 b(b)-5 b(y)55 b(re-)p
Fl(read)p Fp(ing)i(all)f(suc)-5 b(h)56 b(references.)3362
10511 y(23)p eop end
%%Page: 24 32
TeXDict begin 24 31 bop 1727 1046 a Fp(The)38 b(Sc)-5
b(heme)38 b(48)g(dev)-5 b(elopmen)g(t)39 b(en)-5 b(vironmen)g(t)39
b(supp)5 b(orts)39 b(rapid)f(turnaround)h(in)g(mo)5 b(d-)1478
1245 y(ular)54 b(program)g(dev)-5 b(elopmen)g(t)53 b(b)-5
b(y)54 b(allo)-5 b(wing)54 b(m)-5 b(utations)55 b(to)e(a)g(program's)i
(con\014guration,)1478 1445 y(and)h(giving)f(a)g(clear)g(seman)-5
b(tics)57 b(to)e(suc)-5 b(h)56 b(m)-5 b(utations.)75
b(The)55 b(rule)h(is)f(that)g(v)-9 b(ariable)55 b(bind-)1478
1644 y(ings)69 b(in)f(a)g(running)h(program)g(are)f(alw)-5
b(a)g(ys)69 b(resolv)-5 b(ed)68 b(according)h(to)e(curren)-5
b(t)69 b(structure)1478 1843 y(and)58 b(in)-5 b(terface)57
b(bindings,)j(ev)-5 b(en)58 b(when)g(these)f(bindings)j(c)-5
b(hange)58 b(as)g(a)g(result)f(of)h(edits)g(to)1478 2042
y(the)d(con\014guration.)74 b(F)-14 b(or)56 b(example,)g(consider)g
(the)f(follo)-5 b(wing:)1478 2379 y Fl(\(define-interface)90
b(foo-interface)f(\(export)g(a)e(c\)\))1478 2578 y(\(define-structure)j
(foo)e(foo-interface)1652 2777 y(\(open)g(scheme\))1652
2976 y(\(begin)g(\(define)h(a)e(1\))2262 3176 y(\(define)i(\(b)e(x\))h
(\(+)f(a)h(x\)\))2262 3375 y(\(define)h(\(c)e(y\))h(\(*)f(\(b)h(a\))f
(y\)\)\)\))1478 3574 y(\(define-structure)j(bar)e(\(export)g(d\))1652
3773 y(\(open)g(scheme)g(foo\))1652 3973 y(\(begin)g(\(define)h(\(d)e
(w\))h(\(+)f(\(b)h(w\))f(a\)\)\)\))1478 4308 y Fp(This)50
b(program)g(has)h(a)e(bug.)73 b(The)49 b(v)-9 b(ariable)49
b Fl(b)p Fp(,)i(whic)-5 b(h)50 b(is)g(free)f(in)h(the)f(de\014nition)h
(of)g Fl(d)p Fp(,)h(has)1478 4507 y(no)63 b(binding)g(in)g
Fl(bar)p Fp('s)h(pac)-5 b(k)c(age.)95 b(Supp)5 b(ose)63
b(that)f Fl(b)h Fp(w)-5 b(as)63 b(supp)5 b(osed)64 b(to)e(b)5
b(e)63 b(exp)5 b(orted)61 b(b)-5 b(y)1478 4706 y Fl(foo)p
Fp(,)66 b(but)d(w)-5 b(as)64 b(omitted)f(from)g Fl(foo-interface)j
Fp(b)-5 b(y)63 b(mistak)-5 b(e.)98 b(It)63 b(is)h(not)f(necessary)h(to)
1478 4906 y(re-pro)5 b(cess)51 b Fl(bar)g Fp(or)g(an)-5
b(y)51 b(of)f Fl(foo)p Fp('s)i(other)e(clien)-5 b(ts)51
b(at)f(this)h(p)5 b(oin)-5 b(t.)73 b(One)51 b(need)f(only)h(c)-5
b(hange)1478 5105 y Fl(foo-interface)55 b Fp(and)f(inform)g(the)e(dev)
-5 b(elopmen)g(t)54 b(system)g(of)f(that)f(c)-5 b(hange)54
b(\(using,)g(sa)-5 b(y)-14 b(,)1478 5304 y(an)67 b(appropriate)g(Emacs)
g(command\),)k(and)c Fl(foo)p Fp('s)h(binding)g(of)e
Fl(b)h Fp(will)g(b)5 b(e)67 b(found)g(when)1478 5503
y(pro)5 b(cedure)55 b Fl(d)g Fp(is)h(called.)1727 5704
y(Similarly)-14 b(,)48 b(it)c(is)h(also)h(p)5 b(ossible)45
b(to)g(replace)f(a)h(structure;)j(clien)-5 b(ts)45 b(of)f(the)h(old)g
(structure)1478 5903 y(will)53 b(b)5 b(e)53 b(mo)5 b(di\014ed)54
b(so)g(that)f(they)f(see)h(bindings)i(from)f(the)f(new)g(one.)73
b(Shado)-5 b(wing)55 b(is)f(also)1478 6102 y(supp)5 b(orted)56
b(in)g(the)f(same)h(w)-5 b(a)g(y)-14 b(.)75 b(Supp)5
b(ose)56 b(that)f(a)g(clien)-5 b(t)56 b(pac)-5 b(k)c(age)55
b Fd(C)67 b Fp(op)5 b(ens)56 b(a)g(structure)1478 6302
y Fl(foo)68 b Fp(that)f(exp)5 b(orts)67 b(a)h(name)g
Fl(x)p Fp(,)k(and)c Fl(foo)p Fp('s)h(implemen)-5 b(tation)69
b(obtains)f(the)g(binding)h(of)1478 6501 y Fl(x)h Fp(as)g(an)h(imp)5
b(ort)70 b(from)g(some)h(other)e(structure)h Fl(bar)p
Fp(.)118 b(Then)71 b Fd(C)81 b Fp(will)70 b(see)g(the)g(binding)1478
6700 y(from)63 b Fl(bar)p Fp(.)96 b(If)63 b(one)f(then)h(alters)g
Fl(foo)g Fp(so)g(that)f(it)h(shado)-5 b(ws)64 b Fl(bar)p
Fp('s)g(binding)g(of)f Fl(x)g Fp(with)f(a)1478 6899 y(de\014nition)g
(of)g(its)g(o)-5 b(wn,)64 b(then)d(pro)5 b(cedures)62
b(in)g Fd(C)74 b Fp(that)61 b(reference)g Fl(x)h Fp(will)g
(automatically)1478 7099 y(see)55 b Fl(foo)p Fp('s)i(de\014nition)f
(instead)g(of)f(the)g(one)g(from)h Fl(bar)f Fp(that)g(they)g(sa)-5
b(w)56 b(earlier.)1727 7299 y(This)63 b(seman)-5 b(tics)64
b(migh)-5 b(t)63 b(app)5 b(ear)63 b(to)f(require)g(a)g(large)h(amoun)-5
b(t)63 b(of)f(computation)h(on)1478 7498 y(ev)-5 b(ery)48
b(v)-9 b(ariable)49 b(reference:)70 b(The)49 b(sp)5 b(eci\014ed)49
b(b)5 b(eha)-5 b(vior)50 b(requires)f(scanning)h(the)f(pac)-5
b(k)c(age's)1478 7697 y(list)46 b(of)g(op)5 b(ened)46
b(structures,)i(examining)e(their)g(in)-5 b(terfaces,)48
b(on)e(ev)-5 b(ery)45 b(v)-9 b(ariable)46 b(reference,)1478
7897 y(not)58 b(just)h(at)f(compile)g(time.)84 b(Ho)-5
b(w)g(ev)g(er,)59 b(the)f(dev)-5 b(elopmen)g(t)59 b(en)-5
b(vironmen)g(t)59 b(uses)h(cac)-5 b(hing)1478 8096 y(with)55
b(cac)-5 b(he)55 b(in)-5 b(v)c(alidation)56 b(to)f(mak)-5
b(e)56 b(v)-9 b(ariable)55 b(references)g(fast.)1478
8651 y Fi(4.8)269 b(Command)92 b(pro)7 b(cessor)91 b(supp)7
b(ort)1478 9016 y Fp(While)48 b(it)g(is)g(p)5 b(ossible)50
b(to)d(use)i(the)f(Sc)-5 b(heme)48 b(48)h(static)e(link)-5
b(er)49 b(for)f(program)h(dev)-5 b(elopmen)g(t,)1478
9215 y(it)60 b(is)i(far)f(more)g(con)-5 b(v)g(enien)g(t)62
b(to)e(use)i(the)f(dev)-5 b(elopmen)g(t)61 b(en)-5 b(vironmen)g(t,)64
b(whic)-5 b(h)61 b(supp)5 b(orts)1478 9415 y(rapid)53
b(turnaround)g(for)f(program)h(c)-5 b(hanges.)74 b(The)52
b(programmer)h(in)-5 b(teracts)52 b(with)g(the)g(de-)1478
9614 y(v)-5 b(elopmen)g(t)44 b(en)-5 b(vironmen)g(t)45
b(through)f(a)f Fo(c)-8 b(ommand)49 b(pr)-8 b(o)g(c)g(essor)p
Fp(.)68 b(The)44 b(command)h(pro)5 b(cessor)1478 9813
y(is)41 b(lik)-5 b(e)41 b(the)g(usual)h(Lisp)f(read-ev)-9
b(al-prin)k(t)42 b(lo)5 b(op)41 b(in)g(that)g(it)f(accepts)h(Sc)-5
b(heme)42 b(forms)f(to)g(ev)-9 b(al-)1478 10012 y(uate.)73
b(Ho)-5 b(w)g(ev)g(er,)55 b(all)g(meta-lev)-5 b(el)55
b(op)5 b(erations,)55 b(suc)-5 b(h)56 b(as)f(exiting)f(the)h(Sc)-5
b(heme)55 b(system)g(or)4259 10511 y(24)p eop end
%%Page: 25 33
TeXDict begin 25 32 bop 581 1046 a Fp(requests)53 b(for)f(trace)f
(output,)i(are)f(handled)i(b)-5 b(y)52 b Fo(c)-8 b(ommands,)53
b Fp(whic)-5 b(h)53 b(are)f(lexically)g(distin-)581 1245
y(guished)i(from)g(Sc)-5 b(heme)53 b(forms.)74 b(This)54
b(arrangemen)-5 b(t)53 b(is)h(b)5 b(orro)-5 b(w)g(ed)54
b(from)f(the)g(Sym)-5 b(b)5 b(olics)581 1445 y(Lisp)48
b(Mac)-5 b(hine)48 b(system,)i(and)e(is)f(reminiscen)-5
b(t)49 b(of)e(non-Lisp)i(debuggers.)72 b(Commands)49
b(are)581 1644 y(a)71 b(little)f(easier)g(to)h(t)-5 b(yp)5
b(e)69 b(than)i(Sc)-5 b(heme)71 b(forms)g(\(no)g(paren)-5
b(theses,)75 b(so)d(y)-5 b(ou)70 b(don't)h(ha)-5 b(v)g(e)581
1843 y(to)63 b(shift\),)i(but)f(more)f(imp)5 b(ortan)-5
b(tly)-14 b(,)66 b(making)e(them)f(distinct)h(from)f(Sc)-5
b(heme)64 b(forms)g(en-)581 2042 y(sures)c(that)e(programs')j
(namespaces)f(aren't)e(cluttered)g(with)h(inappropriate)h(bindings.)581
2242 y(Equiv)-9 b(alen)k(tly)-14 b(,)62 b(the)e(command)i(set)e(is)i(a)
-5 b(v)c(ailable)61 b(for)f(use)h(regardless)h(of)e(what)h(bindings)581
2441 y(happ)5 b(en)70 b(to)f(b)5 b(e)69 b(visible)h(in)g(the)f(curren)
-5 b(t)69 b(program.)117 b(This)70 b(is)g(esp)5 b(ecially)70
b(imp)5 b(ortan)-5 b(t)69 b(in)581 2640 y(conjunction)59
b(with)f(the)g(mo)5 b(dule)59 b(system,)h(whic)-5 b(h)59
b(puts)g(strict)f(con)-5 b(trols)59 b(on)g(visibilit)-5
b(y)59 b(of)581 2839 y(bindings.)830 3039 y(The)d(Sc)-5
b(heme)56 b(48)g(command)g(pro)5 b(cessor)56 b(supp)5
b(orts)57 b(the)e(mo)5 b(dule)56 b(system)g(with)f(a)h(v)-9
b(a-)581 3238 y(riet)k(y)59 b(of)g(sp)5 b(ecial)60 b(commands.)87
b(F)-14 b(or)60 b(commands)h(that)e(require)g(structure)g(names,)j
(these)581 3437 y(names)g(are)f(resolv)-5 b(ed)62 b(in)f(a)g
(designated)h(con\014guration)f(pac)-5 b(k)c(age)61 b(that)g(is)g
(distinct)h(from)581 3636 y(the)51 b(curren)-5 b(t)50
b(pac)-5 b(k)c(age)51 b(for)f(ev)-9 b(aluating)51 b(Sc)-5
b(heme)51 b(forms)h(giv)-5 b(en)51 b(to)f(the)g(command)i(pro)5
b(ces-)581 3836 y(sor.)110 b(The)68 b(command)g(pro)5
b(cessor)68 b(in)-5 b(terprets)67 b(Sc)-5 b(heme)68 b(forms)g(in)g(a)f
(particular)h(curren)-5 b(t)581 4035 y(pac)g(k)c(age,)64
b(and)f(there)f(are)h(commands)h(that)e(mo)-5 b(v)g(e)63
b(the)f(command)i(pro)5 b(cessor)63 b(b)5 b(et)-5 b(w)g(een)581
4234 y(di\013eren)g(t)56 b(pac)-5 b(k)c(ages.)830 4433
y(Commands)84 b(are)f(in)-5 b(tro)5 b(duced)82 b(b)-5
b(y)83 b(a)f(comma)h(\()p Fl(,)p Fp(\))89 b(and)83 b(end)f(at)g(the)g
(end)h(of)f(line.)581 4633 y(The)61 b(command)g(pro)5
b(cessor's)62 b(prompt)f(consists)h(of)e(the)g(name)h(of)f(the)g
(curren)-5 b(t)61 b(pac)-5 b(k)c(age)581 4832 y(follo)k(w)g(ed)56
b(b)-5 b(y)56 b(a)f(greater-than)g(\()p Fl(>)p Fp(\).)664
5138 y Fl(,open)88 b Fo(structur)-8 b(e)1839 5078 y Fe(\003)996
5338 y Fp(The)66 b Fl(,open)h Fp(command)f(op)5 b(ens)66
b(new)g(structures)g(in)g(the)g(curren)-5 b(t)65 b(pac)-5
b(k)c(age,)69 b(as)d(if)996 5537 y(the)59 b(pac)-5 b(k)c(age's)59
b(de\014nition's)h Fl(open)g Fp(clause)f(had)g(listed)h
Fo(structur)-8 b(e)12 b Fp(.)85 b(As)59 b(with)g Fl(open)996
5736 y Fp(clauses)e(the)e(visible)g(names)i(can)e(b)5
b(e)55 b(mo)5 b(di\014ed,)56 b(as)g(in)996 6076 y Fl(,open)88
b(\(subset)h(foo)e(\(bar)h(baz\)\))996 6415 y Fp(whic)-5
b(h)56 b(only)g(mak)-5 b(es)56 b(the)f Fl(bar)h Fp(and)f
Fl(baz)h Fp(bindings)h(from)f(structure)f Fl(foo)h Fp(visible.)664
6724 y Fl(,config)996 6923 y Fp(The)g Fl(,config)g Fp(command)h(sets)f
(the)f(command)i(pro)5 b(cessor's)56 b(curren)-5 b(t)56
b(pac)-5 b(k)c(age)55 b(to)996 7122 y(b)5 b(e)77 b(the)g(curren)-5
b(t)78 b(con\014guration)g(pac)-5 b(k)c(age.)140 b(F)-14
b(orms)79 b(en)-5 b(tered)77 b(at)g(this)h(p)5 b(oin)-5
b(t)78 b(are)996 7321 y(in)-5 b(terpreted)55 b(as)h(b)5
b(eing)56 b(con\014guration)g(language)g(forms,)g(not)f(Sc)-5
b(heme)56 b(forms.)664 7630 y Fl(,config)89 b Fo(c)-8
b(ommand)996 7829 y Fp(This)76 b(form)f(of)f(the)h Fl(,config)h
Fp(command)f(executes)f(another)h(command)h(in)f(the)996
8028 y(curren)-5 b(t)56 b(con\014guration)g(pac)-5 b(k)c(age.)73
b(F)-14 b(or)56 b(example,)996 8368 y Fl(,config)89 b(,load)f(foo.scm)
996 8708 y Fp(in)-5 b(terprets)59 b(con\014guration)f(language)h(forms)
f(from)g(the)g(\014le)g Fl(foo.scm)h Fp(in)g(the)e(cur-)996
8907 y(ren)-5 b(t)56 b(con\014guration)g(pac)-5 b(k)c(age.)664
9215 y Fl(,config-package-is)90 b Fo(struct-name)996
9415 y Fp(The)45 b Fl(,config-package-is)i Fp(command)e(designates)h(a)
e(new)g(con\014guration)h(pac)-5 b(k-)996 9614 y(age)60
b(for)g(use)g(b)-5 b(y)61 b(the)e Fl(,config)i Fp(command)h(and)e
(resolution)h(of)72 b Fo(struct-name)12 b Fp(s)63 b(for)996
9813 y(other)e(commands)h(suc)-5 b(h)61 b(as)g Fl(,in)h
Fp(and)f Fl(,open)p Fp(.)90 b(See)60 b(section)h(4.9)g(for)f
(information)996 10012 y(on)c(making)g(new)f(con\014guration)h(pac)-5
b(k)c(ages.)3362 10511 y(25)p eop end
%%Page: 26 34
TeXDict begin 26 33 bop 1561 1046 a Fl(,in)88 b Fo(struct-name)1893
1245 y Fp(The)41 b Fl(,in)g Fp(command)h(mo)-5 b(v)g(es)42
b(the)f(command)h(pro)5 b(cessor)41 b(to)g(a)g(sp)5 b(eci\014ed)41
b(structure's)1893 1445 y(underlying)56 b(pac)-5 b(k)c(age.)74
b(F)-14 b(or)56 b(example:)1893 1809 y Fl(user>)88 b(,config)1893
2008 y(config>)g(\(define-structure)i(foo)e(\(export)g(a\))2765
2207 y(\(open)g(scheme\)\))1893 2406 y(config>)g(,in)g(foo)1893
2606 y(foo>)g(\(define)g(a)f(13\))1893 2805 y(foo>)h(a)1893
3004 y(13)1893 3368 y Fp(In)63 b(this)g(example)g(the)g(command)h(pro)5
b(cessor)63 b(starts)h(in)f(a)g(pac)-5 b(k)c(age)62 b(called)h
Fl(user)p Fp(,)1893 3568 y(but)48 b(the)g Fl(,config)h
Fp(command)g(mo)-5 b(v)g(es)49 b(it)f(in)-5 b(to)48 b(the)g
(con\014guration)g(pac)-5 b(k)c(age,)50 b(whic)-5 b(h)1893
3767 y(has)47 b(the)g(name)g Fl(config)p Fp(.)72 b(The)47
b Fl(define-structure)i Fp(form)e(binds,)j(in)d Fl(config)p
Fp(,)j(the)1893 3966 y(name)63 b Fl(foo)f Fp(to)g(a)h(structure)f(that)
f(exp)5 b(orts)62 b Fl(a)p Fp(.)95 b(Finally)-14 b(,)65
b(the)d(command)h Fl(,in)88 b(foo)1893 4165 y Fp(mo)-5
b(v)g(es)56 b(the)f(command)i(pro)5 b(cessor)56 b(in)-5
b(to)55 b(structure)g Fl(foo)p Fp('s)i(underlying)f(pac)-5
b(k)c(age.)1893 4424 y(A)65 b(pac)-5 b(k)c(age's)66 b(b)5
b(o)g(dy)66 b(isn't)g(executed)f(\(ev)-9 b(aluated\))64
b(un)-5 b(til)66 b(the)g(pac)-5 b(k)c(age)65 b(is)i Fo(lo)-8
b(ade)g(d)p Fp(,)1893 4623 y(whic)j(h)56 b(is)g(accomplished)h(b)-5
b(y)55 b(the)g Fl(,load-package)j Fp(command.)1561 4942
y Fl(,in)88 b Fo(struct-name)101 b(c)-8 b(ommand)1893
5141 y Fp(This)67 b(form)f(of)g(the)g Fl(,in)h Fp(command)g(executes)f
(a)g(single)h(command)g(in)g(the)f(sp)5 b(ec-)1893 5340
y(i\014ed)63 b(pac)-5 b(k)c(age)61 b(without)h(mo)-5
b(ving)63 b(the)f(command)i(pro)5 b(cessor)62 b(in)-5
b(to)63 b(that)e(pac)-5 b(k)c(age.)1893 5540 y(Example:)1893
5904 y Fl(,in)88 b(mumble)g(\(cons)g(1)f(2\))1893 6103
y(,in)h(mumble)g(,trace)g(foo)1561 6467 y(,user)g([)p
Fo(c)-8 b(ommand)17 b Fl(])1893 6666 y Fp(This)44 b(is)h(similar)f(to)g
(the)f Fl(,config)i Fp(and)f Fl(,in)g Fp(commands.)71
b(It)44 b(mo)-5 b(v)g(es)44 b(to)g(or)f(executes)1893
6866 y(a)67 b(command)g(in)g(the)g(user)g(pac)-5 b(k)c(age)66
b(\(whic)-5 b(h)67 b(is)h(the)e(default)g(pac)-5 b(k)c(age)67
b(when)g(the)1893 7065 y(Sc)-5 b(heme)56 b(48)f(command)i(pro)5
b(cessor)56 b(starts\).)1561 7383 y Fl(,user-package-is)90
b Fo(name)1893 7582 y Fp(The)59 b Fl(,user-package-is)j
Fp(command)e(designates)g(a)g(new)f(user)h(pac)-5 b(k)c(age)59
b(for)g(use)1893 7782 y(b)-5 b(y)56 b(the)e Fl(,user)j
Fp(command.)1561 8100 y Fl(,load-package)89 b Fo(struct-name)1893
8299 y Fp(The)63 b Fl(,load-package)j Fp(command)e(ensures)h(that)e
(the)g(sp)5 b(eci\014ed)64 b(structure's)f(un-)1893 8499
y(derlying)j(pac)-5 b(k)c(age's)66 b(program)h(has)f(b)5
b(een)66 b(loaded.)106 b(This)66 b(consists)h(of)f(\(1\))f(recur-)1893
8698 y(siv)-5 b(ely)49 b(ensuring)i(that)d(the)h(pac)-5
b(k)c(ages)49 b(of)g(an)-5 b(y)49 b(op)5 b(ened)49 b(or)h(accessed)f
(structures)g(are)1893 8897 y(loaded,)72 b(follo)-5 b(w)g(ed)69
b(b)-5 b(y)68 b(\(2\))f(executing)h(the)g(pac)-5 b(k)c(age's)68
b(b)5 b(o)g(dy)68 b(as)g(sp)5 b(eci\014ed)69 b(b)-5 b(y)68
b(its)1893 9096 y(de\014nition's)56 b Fl(begin)h Fp(and)f
Fl(files)g Fp(forms.)1561 9415 y Fl(,reload-package)90
b Fo(struct-name)1893 9614 y Fp(This)61 b(command)h(re-executes)d(the)h
(structure's)h(pac)-5 b(k)c(age's)61 b(program.)90 b(It)60
b(is)h(most)1893 9813 y(useful)67 b(if)g(the)f(program)h(comes)h(from)e
(a)h(\014le)g(or)g(\014les,)j(when)d(it)f(will)h(up)5
b(date)67 b(the)1893 10012 y(pac)-5 b(k)c(age's)56 b(bindings)h(after)d
(m)-5 b(utations)57 b(to)e(its)g(source)h(\014le.)4259
10511 y(26)p eop end
%%Page: 27 35
TeXDict begin 27 34 bop 664 1046 a Fl(,load)88 b Fo(\014lesp)-8
b(e)g(c)97 b Fl(...)996 1245 y Fp(The)58 b Fl(,load)h
Fp(command)g(executes)e(forms)h(from)g(the)f(sp)5 b(eci\014ed)59
b(\014le)f(or)f(\014les)i(in)f(the)996 1445 y(curren)-5
b(t)39 b(pac)-5 b(k)c(age.)67 b Fl(,load)88 b Fo(\014lesp)-8
b(e)g(c)49 b Fp(is)38 b(similar)i(to)e Fl(\(load)88 b(")p
Fo(\014lesp)-8 b(e)g(c)9 b Fl("\))39 b Fp(except)e(that)996
1644 y(the)48 b(name)h Fl(load)h Fp(needn't)e(b)5 b(e)49
b(b)5 b(ound)49 b(in)g(the)f(curren)-5 b(t)49 b(pac)-5
b(k)c(age)48 b(to)g(Sc)-5 b(heme's)50 b Fl(load)996 1843
y Fp(pro)5 b(cedure.)664 2177 y Fl(,for-syntax)89 b([)p
Fo(c)-8 b(ommand)17 b Fl(])996 2376 y Fp(This)45 b(is)f(similar)h(to)e
(the)g Fl(,config)i Fp(and)f Fl(,in)g Fp(commands.)72
b(It)43 b(mo)-5 b(v)g(es)45 b(to)e(or)h(executes)996
2575 y(a)68 b(command)i(in)e(the)g(curren)-5 b(t)68 b(pac)-5
b(k)c(age's)68 b(\\pac)-5 b(k)c(age)68 b(for)g(syn)-5
b(tax,")72 b(whic)-5 b(h)68 b(is)h(the)996 2775 y(pac)-5
b(k)c(age)44 b(in)g(whic)-5 b(h)45 b(the)f(forms)g Fd(f)62
b Fp(in)45 b Fl(\(define-syntax)89 b Fo(name)100 b(f)35
b Fl(\))44 b Fp(are)g(ev)-9 b(aluated.)664 3109 y Fl(,new-package)996
3308 y Fp(The)70 b Fl(,new-package)j Fp(command)e(creates)f(a)g(new)g
(pac)-5 b(k)c(age,)73 b(in)e(whic)-5 b(h)71 b(only)f(the)996
3507 y(standard)56 b(Sc)-5 b(heme)55 b(bindings)h(are)e(visible,)i(and)
f(mo)-5 b(v)g(es)55 b(the)g(command)g(pro)5 b(cessor)996
3706 y(to)55 b(it.)664 4040 y Fl(,structure)89 b Fo(name)100
b(interfac)-8 b(e)996 4239 y Fp(The)59 b Fl(,structure)i
Fp(command)f(de\014nes)g Fo(name)72 b Fp(in)60 b(the)f(con\014guration)
g(pac)-5 b(k)c(age)59 b(to)996 4439 y(b)5 b(e)55 b(a)h(structure)f
(with)g(in)-5 b(terface)55 b Fo(interfac)-8 b(e)69 b
Fp(based)56 b(on)f(the)g(curren)-5 b(t)56 b(pac)-5 b(k)c(age.)581
4990 y Fi(4.9)270 b(Con\014guration)92 b(pac)-7 b(k)-15
b(ages)581 5355 y Fp(It)57 b(is)i(p)5 b(ossible)59 b(to)e(set)h(up)g(m)
-5 b(ultiple)59 b(con\014guration)f(pac)-5 b(k)c(ages.)81
b(The)58 b(default)g(con\014gura-)581 5554 y(tion)d(pac)-5
b(k)c(age)56 b(op)5 b(ens)55 b(the)g(follo)-5 b(wing)56
b(structures:)830 5887 y Fg(\017)83 b Fl(module-system)p
Fp(,)52 b(whic)-5 b(h)48 b(exp)5 b(orts)47 b Fl(define-structure)j
Fp(and)e(the)g(other)f(con\014gu-)996 6086 y(ration)f(language)g(k)-5
b(eyw)g(ords,)48 b(as)e(w)-5 b(ell)46 b(as)g(standard)g(t)-5
b(yp)5 b(es)46 b(and)g(t)-5 b(yp)5 b(e)44 b(constructors)996
6286 y(\()p Fl(:syntax)p Fp(,)57 b Fl(:value)p Fp(,)f
Fl(proc)p Fp(,)g(etc.\).)830 6619 y Fg(\017)83 b Fl
(built-in-structures)p Fp(,)76 b(whic)-5 b(h)69 b(exp)5
b(orts)68 b(structures)h(that)f(are)h(built)g(in)-5 b(to)69
b(the)996 6819 y(initial)82 b(Sc)-5 b(heme)82 b(48)f(image;)95
b(these)81 b(include)h Fl(scheme)p Fp(,)89 b Fl(threads)p
Fp(,)g Fl(tables)p Fp(,)g(and)996 7018 y Fl(records)p
Fp(.)830 7352 y Fg(\017)83 b Fl(more-structures)p Fp(,)102
b(whic)-5 b(h)90 b(exp)5 b(orts)90 b(additional)h(structures)f(that)f
(are)h(a)-5 b(v)c(ail-)996 7551 y(able)71 b(in)f(the)g(dev)-5
b(elopmen)g(t)71 b(en)-5 b(vironmen)g(t.)119 b(A)70 b(complete)g
(listing)h(can)f(b)5 b(e)70 b(found)996 7750 y(in)j(the)f(de\014nition)
h(of)85 b Fl(more-structures-interface)76 b Fp(at)c(the)g(end)h(of)f
(the)g(\014le)996 7950 y Fl(scheme/packages.scm)p Fp(.)581
8283 y(Note)54 b(that)h(it)g(do)5 b(es)56 b(not)f(op)5
b(en)55 b Fl(scheme)p Fp(.)830 8483 y(Y)-14 b(ou)56 b(can)g(de\014ne)g
(additional)g(con\014guration)g(pac)-5 b(k)c(ages)56
b(b)-5 b(y)56 b(making)g(a)g(pac)-5 b(k)c(age)55 b(that)581
8682 y(op)5 b(ens)37 b Fl(module-system)j Fp(and,)h(optionally)-14
b(,)41 b Fl(built-in-structures)p Fp(,)j Fl(more-structures)p
Fp(,)581 8881 y(or)56 b(other)f(structures)g(that)g(exp)5
b(ort)54 b(structures)i(and)g(in)-5 b(terfaces.)830 9081
y(F)-14 b(or)56 b(example:)581 9415 y Fl(>)87 b(,config)i
(\(define-structure)h(foo)e(\(export\))1627 9614 y(\(open)g
(module-system)2150 9813 y(built-in-structures)2150 10012
y(more-structures\)\))3362 10511 y Fp(27)p eop end
%%Page: 28 36
TeXDict begin 28 35 bop 1478 1046 a Fl(>)87 b(,in)h(foo)1478
1245 y(foo>)g(\(define-structure)i(x)d(\(export)h(a)g(b\))2088
1445 y(\(open)g(scheme\))2088 1644 y(\(files)g(x\)\))1478
1843 y(foo>)1727 2150 y Fp(Unfortunately)-14 b(,)49 b(the)e(ab)5
b(o)-5 b(v)g(e)49 b(example)f(do)5 b(es)48 b(not)g(w)-5
b(ork.)72 b(The)48 b(problem)h(is)f(that)g(ev)-5 b(ery)1478
2349 y(en)g(vironmen)g(t)71 b(in)g(whic)-5 b(h)71 b Fl
(define-structure)i Fp(is)e(de\014ned)g(m)-5 b(ust)72
b(also)f(ha)-5 b(v)g(e)71 b(a)f(w)-5 b(a)g(y)71 b(to)1478
2549 y(create)50 b(\\re\015ectiv)-5 b(e)51 b(to)-5 b(w)g(ers")52
b(\(a)f(misnomer;)j(a)e(b)5 b(etter)50 b(name)i(w)-5
b(ould)52 b(b)5 b(e)51 b(\\syn)-5 b(tactic)51 b(to)-5
b(w-)1478 2748 y(ers"\).)71 b(A)46 b(new)h(re\015ectiv)-5
b(e)47 b(to)-5 b(w)g(er)47 b(is)h(required)e(whenev)-5
b(er)47 b(a)g(new)g(en)-5 b(vironmen)g(t)48 b(is)g(created)1478
2947 y(for)63 b(compiling)h(the)e(source)i(co)5 b(de)62
b(in)h(the)g(pac)-5 b(k)c(age)63 b(asso)5 b(ciated)63
b(with)f(a)h(new)g(structure.)1478 3146 y(The)41 b(en)-5
b(vironmen)g(t's)42 b(to)-5 b(w)g(er)42 b(is)f(used)h(at)f(compile)h
(time)f(for)f(ev)-9 b(aluating)41 b(the)g Fo(macr)-8
b(o-sour)g(c)g(e)1478 3346 y Fp(in)1478 3653 y Fl(\(define-syntax)89
b Fo(name)100 b(macr)-8 b(o-sour)g(c)g(e)12 b Fl(\))1478
3852 y(\(let-syntax)89 b(\(\()p Fo(name)100 b(macr)-8
b(o-sour)g(c)g(e)12 b Fl(\))88 b Fo(...)p Fl(\))f Fo(b)-8
b(o)g(dy)15 b Fl(\))1478 4159 y Fp(and)48 b(so)g(forth.)71
b(It)47 b(is)h(a)g(\\to)-5 b(w)g(er")48 b(b)5 b(ecause)47
b(that)g(en)-5 b(vironmen)g(t,)50 b(in)e(turn,)i(has)e(to)f(sa)-5
b(y)49 b(what)1478 4358 y(en)-5 b(vironmen)g(t)56 b(to)f(use)h(if)68
b Fl(macro-source)57 b Fp(itself)f(con)-5 b(tains)56
b(a)f(use)h(of)68 b Fl(let-syntax)p Fp(.)1727 4558 y(The)51
b(simplest)h(w)-5 b(a)g(y)52 b(to)f(pro)-5 b(vide)51
b(a)h(to)-5 b(w)g(er)51 b(mak)-5 b(er)51 b(is)h(to)f(pass)h(on)g(the)e
(one)i(used)g(b)-5 b(y)51 b(an)1478 4757 y(existing)73
b(con\014guration)i(pac)-5 b(k)c(age.)128 b(The)74 b(sp)5
b(ecial)74 b(form)f Fl(export-reflective-tower)1478 4956
y Fp(creates)63 b(an)i(in)-5 b(terface)64 b(that)f(exp)5
b(orts)64 b(a)g(con\014guration)h(pac)-5 b(k)c(age's)64
b(to)-5 b(w)g(er.)101 b(The)64 b(follo)-5 b(w-)1478 5155
y(ing)49 b(example)g(uses)h Fl(export-reflective-tower)j
Fp(and)c(the)g Fl(,structure)i Fp(command)f(to)1478 5355
y(obtain)55 b(a)h(to)-5 b(w)g(er)55 b(mak)-5 b(er)56
b(and)g(create)e(a)h(new)h(con\014guration)g(en)-5 b(vironmen)g(t.)1478
5689 y Fl(>)87 b(,config)i(,structure)f(t)g
(\(export-reflective-tower-maker\))1478 5888 y(>)f(,config)i
(\(define-structure)h(foo)d(\(export\))2524 6087 y(\(open)h
(module-system)3047 6287 y(t)3047 6486 y(built-in-structures)3047
6685 y(more-structures\)\))1478 7229 y Fi(4.10)270 b(Discussion)1478
7592 y Fp(This)52 b(mo)5 b(dule)52 b(system)h(w)-5 b(as)52
b(not)g(designed)g(as)h(the)e(b)5 b(e-all)52 b(and)g(end-all)h(of)e(Sc)
-5 b(heme)53 b(mo)5 b(d-)1478 7792 y(ule)70 b(systems;)78
b(it)70 b(w)-5 b(as)70 b(only)g(in)-5 b(tended)71 b(to)e(help)h(us)h
(organize)f(the)f(Sc)-5 b(heme)71 b(48)f(system.)1478
7991 y(Not)g(only)g(do)5 b(es)71 b(the)f(mo)5 b(dule)72
b(system)f(help)g(a)-5 b(v)g(oid)71 b(name)g(clashes)h(b)-5
b(y)71 b(k)-5 b(eeping)71 b(di\013er-)1478 8190 y(en)-5
b(t)79 b(subsystems)j(in)d(di\013eren)-5 b(t)80 b(namespaces,)87
b(it)79 b(has)h(also)h(help)5 b(ed)79 b(us)h(to)f(tigh)-5
b(ten)80 b(up)1478 8389 y(and)74 b(generalize)f(Sc)-5
b(heme)74 b(48's)g(in)-5 b(ternal)74 b(in)-5 b(terfaces.)128
b(Sc)-5 b(heme)74 b(48)f(is)h(un)-5 b(usual)76 b(among)1478
8589 y(Lisp)54 b(implemen)-5 b(tations)56 b(in)e(admitting)g(man)-5
b(y)55 b(di\013eren)-5 b(t)54 b(p)5 b(ossible)55 b(mo)5
b(des)55 b(of)e(op)5 b(eration.)1478 8788 y(Examples)56
b(of)f(suc)-5 b(h)56 b(m)-5 b(ultiple)57 b(mo)5 b(des)56
b(include)g(the)f(follo)-5 b(wing:)1727 9095 y Fg(\017)83
b Fp(Linking)55 b(can)h(b)5 b(e)55 b(either)g(static)g(or)g(dynamic.)
1727 9415 y Fg(\017)83 b Fp(The)43 b(dev)-5 b(elopmen)g(t)44
b(en)-5 b(vironmen)g(t)44 b(\(compiler,)h(debugger,)h(and)e(command)g
(pro)5 b(ces-)1893 9614 y(sor\))51 b(can)g(run)g(either)f(in)i(the)e
(same)i(address)g(space)f(as)g(the)g(program)g(b)5 b(eing)51
b(dev)-5 b(el-)1893 9813 y(op)5 b(ed)58 b(or)h(in)f(a)h(di\013eren)-5
b(t)58 b(address)i(space.)83 b(The)59 b(en)-5 b(vironmen)g(t)59
b(and)g(user)g(program)1893 10012 y(ma)-5 b(y)49 b(ev)-5
b(en)49 b(run)g(on)g(di\013eren)-5 b(t)49 b(pro)5 b(cessors)50
b(under)f(di\013eren)-5 b(t)49 b(op)5 b(erating)48 b(systems[8)q(].)
4259 10511 y(28)p eop end
%%Page: 29 37
TeXDict begin 29 36 bop 830 1046 a Fg(\017)83 b Fp(The)63
b(virtual)f(mac)-5 b(hine)63 b(can)g(b)5 b(e)62 b(supp)5
b(orted)63 b(b)-5 b(y)62 b(either)g(of)g(t)-5 b(w)g(o)63
b(implemen)-5 b(tations)996 1245 y(of)55 b(its)h(implemen)-5
b(tation)56 b(language,)g(Presc)-5 b(heme.)581 1577 y(The)68
b(mo)5 b(dule)68 b(system)g(has)g(b)5 b(een)67 b(helpful)h(in)g
(organizing)g(these)g(m)-5 b(ultiple)68 b(mo)5 b(des.)111
b(By)581 1777 y(forcing)40 b(us)h(to)f(write)g(do)-5
b(wn)41 b(in)-5 b(terfaces)40 b(and)h(mo)5 b(dule)41
b(dep)5 b(endencies,)44 b(the)c(mo)5 b(dule)40 b(system)581
1976 y(helps)50 b(us)f(to)g(k)-5 b(eep)48 b(the)h(system)g(clean,)h(or)
f(at)f(least)h(to)g(k)-5 b(eep)48 b(us)i(honest)f(ab)5
b(out)48 b(ho)-5 b(w)50 b(clean)581 2175 y(or)56 b(not)f(it)g(is.)830
2374 y(The)47 b(need)f(to)g(mak)-5 b(e)47 b(structures)f(and)h(in)-5
b(terfaces)47 b(second-class)h(instead)f(of)f(\014rst-class)581
2574 y(results)i(from)g(the)f(requiremen)-5 b(ts)48 b(of)g(static)f
(program)h(analysis:)71 b(it)47 b(m)-5 b(ust)49 b(b)5
b(e)47 b(p)5 b(ossible)49 b(for)581 2773 y(the)59 b(compiler)g(and)h
(link)-5 b(er)59 b(to)g(expand)g(macros)h(and)f(resolv)-5
b(e)60 b(v)-9 b(ariable)59 b(bindings)h(b)5 b(efore)581
2972 y(the)47 b(program)h(is)g(executed.)71 b(Structures)47
b(could)h(b)5 b(e)47 b(made)h(\014rst-class)h(\(as)e(in)h(FX[10]\))f
(if)h(a)581 3171 y(t)-5 b(yp)5 b(e)50 b(system)i(w)-5
b(ere)51 b(added)g(to)g(Sc)-5 b(heme)52 b(and)f(the)g(de\014nitions)h
(of)f(exp)5 b(orted)50 b(macros)i(w)-5 b(ere)581 3371
y(de\014ned)67 b(in)g(in)-5 b(terfaces)66 b(instead)h(of)g(in)f(mo)5
b(dule)67 b(b)5 b(o)g(dies,)70 b(but)c(ev)-5 b(en)67
b(in)f(that)g(case)h(t)-5 b(yp)5 b(es)581 3570 y(and)56
b(in)-5 b(terfaces)55 b(w)-5 b(ould)57 b(remain)f(second-class.)830
3769 y(The)67 b(prohibition)h(on)f(assignmen)-5 b(t)69
b(to)d(imp)5 b(orted)67 b(bindings)i(mak)-5 b(es)68 b(substitution)g(a)
581 3968 y(v)-9 b(alid)62 b(optimization)g(when)g(a)g(mo)5
b(dule)62 b(is)g(compiled)h(as)f(a)g(blo)5 b(c)-5 b(k.)93
b(The)62 b(blo)5 b(c)-5 b(k)61 b(compiler)581 4168 y(\014rst)e(scans)h
(the)f(en)-5 b(tire)59 b(mo)5 b(dule)59 b(b)5 b(o)g(dy)-14
b(,)59 b(noting)h(whic)-5 b(h)59 b(v)-9 b(ariables)59
b(are)g(assigned.)86 b(Those)581 4367 y(that)40 b(aren't)g(assigned)h
(\(only)f Fl(define)p Fp(d\))h(ma)-5 b(y)41 b(b)5 b(e)40
b(assumed)h(nev)-5 b(er)41 b(assigned,)j(ev)-5 b(en)40
b(if)g(they)581 4566 y(are)48 b(exp)5 b(orted.)70 b(The)48
b(optimizer)f(can)h(then)g(p)5 b(erform)47 b(a)h(v)-5
b(ery)47 b(simple-minded)j(analysis)f(to)581 4765 y(determine)60
b(automatically)g(that)f(some)h(pro)5 b(cedures)61 b(can)e(and)i
(should)g(ha)-5 b(v)g(e)60 b(their)g(calls)581 4965 y(compiled)c(in)g
(line.)830 5164 y(The)50 b(programming)h(st)-5 b(yle)49
b(encouraged)h(b)-5 b(y)50 b(the)f(mo)5 b(dule)50 b(system)g(is)g
(consisten)-5 b(t)51 b(with)581 5363 y(the)h(unextended)h(Sc)-5
b(heme)53 b(language.)74 b(Because)52 b(mo)5 b(dule)53
b(system)g(features)g(do)g(not)f(gen-)581 5562 y(erally)f(sho)-5
b(w)53 b(up)f(within)g(mo)5 b(dule)52 b(b)5 b(o)g(dies,)53
b(an)f(individual)g(mo)5 b(dule)52 b(ma)-5 b(y)52 b(b)5
b(e)52 b(understo)5 b(o)g(d)581 5762 y(b)-5 b(y)56 b(someone)h(who)f
(is)g(not)g(familiar)g(with)g(the)f(mo)5 b(dule)56 b(system.)76
b(This)56 b(is)h(a)f(great)f(aid)h(to)581 5961 y(co)5
b(de)54 b(presen)-5 b(tation)55 b(and)g(p)5 b(ortabilit)-5
b(y)-14 b(.)74 b(If)54 b(a)h(few)f(simple)i(conditions)f(are)g(met)f
(\(no)g(name)581 6160 y(con\015icts)70 b(b)5 b(et)-5
b(w)g(een)68 b(pac)-5 b(k)c(ages,)73 b(and)d(use)f(of)g
Fl(files)h Fp(in)g(preference)e(to)h Fl(begin)p Fp(\),)k(then)c(a)581
6359 y(m)-5 b(ulti-mo)5 b(dule)62 b(program)f(can)f(b)5
b(e)60 b(loaded)h(in)-5 b(to)60 b(a)h(Sc)-5 b(heme)61
b(implemen)-5 b(tation)61 b(that)e(do)5 b(es)581 6559
y(not)48 b(supp)5 b(ort)49 b(the)e(mo)5 b(dule)49 b(system.)72
b(The)48 b(Sc)-5 b(heme)49 b(48)f(static)f(link)-5 b(er)49
b(satis\014es)g(these)f(con-)581 6758 y(ditions,)66 b(and)e(can)f
(therefore)g(run)h(in)f(other)g(Sc)-5 b(heme)64 b(implemen)-5
b(tations.)99 b(Sc)-5 b(heme)64 b(48's)581 6957 y(b)5
b(o)g(otstrap)40 b(pro)5 b(cess,)43 b(whic)-5 b(h)41
b(is)g(based)f(on)h(the)e(static)h(link)-5 b(er,)43 b(is)e(therefore)e
(nonincestuous.)581 7156 y(This)58 b(con)-5 b(trasts)58
b(with)f(most)h(other)f(in)-5 b(tegrated)57 b(programming)i(en)-5
b(vironmen)g(ts,)60 b(suc)-5 b(h)58 b(as)581 7356 y(Smalltalk-80,)70
b(where)c(the)g(system)g(can)g(only)h(b)5 b(e)65 b(built)i(using)g(an)g
(existing)f(v)-5 b(ersion)67 b(of)581 7555 y(the)55 b(system)h(itself.)
830 7754 y(Lik)-5 b(e)68 b(ML)g(mo)5 b(dules,)72 b(but)c(unlik)-5
b(e)69 b(Sc)-5 b(heme)69 b(Xero)-5 b(x)67 b(mo)5 b(dules,)72
b(this)d(mo)5 b(dule)68 b(system)581 7954 y(is)d(comp)5
b(ositional.)100 b(That)64 b(is,)j(structures)d(are)g(constructed)f(b)
-5 b(y)65 b(single)f(syn)-5 b(tactic)64 b(units)581 8153
y(that)j(comp)5 b(ose)68 b(existing)f(structures)g(with)h(a)f(b)5
b(o)g(dy)67 b(of)g(co)5 b(de.)109 b(In)67 b(Sc)-5 b(heme)68
b(Xero)-5 b(x,)70 b(the)581 8352 y(set)51 b(of)g(mo)5
b(dules)52 b(that)f(can)g(con)-5 b(tribute)51 b(to)g(an)g(in)-5
b(terface)51 b(is)h(op)5 b(en-ended)52 b(|)f(an)-5 b(y)51
b(mo)5 b(dule)581 8551 y(can)62 b(con)-5 b(tribute)62
b(bindings)i(to)d(an)-5 b(y)63 b(in)-5 b(terface)61 b(whose)h(name)h
(is)f(in)h(scop)5 b(e.)93 b(The)62 b(mo)5 b(dule)581
8751 y(system)52 b(implemen)-5 b(tation)52 b(is)g(a)f(cross-bar)i(that)
e(c)-5 b(hannels)52 b(de\014nitions)h(from)e(mo)5 b(dules)52
b(to)581 8950 y(in)-5 b(terfaces.)72 b(The)51 b(mo)5
b(dule)50 b(system)h(describ)5 b(ed)51 b(here)f(has)h(simpler)h(seman)
-5 b(tics)51 b(and)g(mak)-5 b(es)581 9149 y(dep)5 b(endencies)77
b(easier)g(to)f(trace.)137 b(It)76 b(also)h(allo)-5 b(ws)78
b(for)e(higher-order)i(mo)5 b(dules,)83 b(whic)-5 b(h)581
9348 y(Sc)g(heme)56 b(Xero)-5 b(x)55 b(considers)i(unimp)5
b(ortan)-5 b(t.)3362 10511 y(29)p eop end
%%Page: 30 38
TeXDict begin 30 37 bop 1478 2292 a Fk(Chapter)129 b(5)1478
3123 y Fn(Libraries)1478 3987 y Fp(Use)56 b(the)h Fl(,open)h
Fp(command)g(\(section)e(3.4\))h(or)g(the)f(mo)5 b(dule)57
b(language)h(\(c)-5 b(hapter)56 b(2.6\))h(to)1478 4186
y(op)5 b(en)55 b(the)g(structures)h(describ)5 b(ed)55
b(b)5 b(elo)-5 b(w.)1478 4738 y Fi(5.1)269 b(General)90
b(utilities)1478 5103 y Fp(These)55 b(are)h(in)f(the)g
Fl(big-util)i Fp(structure.)1511 5404 y Fg(\017)83 b
Fl(\(atom?)101 b Fo(value)12 b Fl(\))85 b Fg(!)e Fo(b)-8
b(o)g(ole)g(an)1478 5705 y Fl(\(atom?)175 b Fo(x)20 b
Fl(\))56 b Fp(is)g(the)f(same)h(as)g Fl(\(not)87 b(\(pair?)176
b Fo(x)20 b Fl(\)\))p Fp(.)1511 6005 y Fg(\017)83 b Fl(\(null-list?)102
b Fo(list)16 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1478
6306 y Fp(Returns)55 b(true)g(for)f(the)h(empt)-5 b(y)55
b(list,)g(false)g(for)f(a)h(pair,)h(and)f(signals)h(an)f(error)g
(otherwise.)1511 6607 y Fg(\017)83 b Fl(\(neq?)101 b
Fo(value)84 b(value)12 b Fl(\))85 b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)1478
6908 y Fl(\(neq?)175 b Fo(x)107 b(y)15 b Fl(\))55 b Fp(is)h(the)f(same)
h(as)g Fl(\(not)88 b(\(eq?)175 b Fo(x)107 b(y)14 b Fl(\)\))p
Fp(.)1511 7208 y Fg(\017)83 b Fl(\(n=)h Fo(numb)-8 b(er)83
b(numb)-8 b(er)18 b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)1478
7509 y Fl(\(n=)87 b Fo(x)108 b(y)14 b Fl(\))56 b Fp(is)f(the)g(same)h
(as)g Fl(\(not)88 b(\(=)g Fo(x)107 b(y)14 b Fl(\)\))p
Fp(.)1511 7810 y Fg(\017)83 b Fl(\(identity)i Fo(value)12
b Fl(\))84 b Fg(!)g Fo(value)1511 8009 y Fg(\017)f Fl(\(no-op)h
Fo(value)12 b Fl(\))85 b Fg(!)e Fo(value)1478 8310 y
Fp(These)49 b(b)5 b(oth)50 b(just)f(return)g(their)h(argumen)-5
b(t.)72 b Fl(No-op)50 b Fp(is)g(guaran)-5 b(teed)50 b(not)g(to)f(b)5
b(e)49 b(compiled)1478 8509 y(in-line,)56 b Fl(identity)h
Fp(ma)-5 b(y)56 b(b)5 b(e.)1511 8810 y Fg(\017)83 b Fl(\(memq?)101
b Fo(value)84 b(list)16 b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)1478
9110 y Fp(Returns)56 b(true)f(if)g Fo(value)69 b Fp(is)56
b(in)g Fo(list)16 b Fp(,)55 b(false)h(otherwise.)1511
9411 y Fg(\017)83 b Fl(\(any?)101 b Fo(pr)-8 b(e)g(dic)g(ate)82
b(list)16 b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)1478
9712 y Fp(Returns)56 b(true)f(if)g Fo(pr)-8 b(e)g(dic)g(ate)67
b Fp(is)56 b(true)f(for)g(an)-5 b(y)56 b(elemen)-5 b(t)55
b(of)g Fo(list)17 b Fp(.)1511 10012 y Fg(\017)83 b Fl(\(every?)101
b Fo(pr)-8 b(e)g(dic)g(ate)83 b(list)16 b Fl(\))83 b
Fg(!)g Fo(b)-8 b(o)g(ole)g(an)4259 10511 y Fp(30)p eop
end
%%Page: 31 39
TeXDict begin 31 38 bop 581 1046 a Fp(Returns)56 b(true)f(if)g
Fo(pr)-8 b(e)g(dic)g(ate)68 b Fp(is)55 b(true)g(for)h(ev)-5
b(ery)54 b(elemen)-5 b(t)56 b(of)f Fo(list)16 b Fp(.)614
1367 y Fg(\017)83 b Fl(\(any)h Fo(pr)-8 b(e)g(dic)g(ate)83
b(list)16 b Fl(\))83 b Fg(!)g Fo(value)614 1567 y Fg(\017)g
Fl(\(first)h Fo(pr)-8 b(e)g(dic)g(ate)83 b(list)16 b
Fl(\))83 b Fg(!)g Fo(value)581 1888 y Fl(Any)53 b Fp(returns)g(some)h
(elemen)-5 b(t)52 b(of)h Fo(list)68 b Fp(for)53 b(whic)-5
b(h)53 b Fo(pr)-8 b(e)g(dic)g(ate)65 b Fp(is)53 b(true,)g(or)g(false)f
(if)h(there)f(are)581 2087 y(none.)107 b Fl(First)67
b Fp(do)5 b(es)66 b(the)g(same)h(except)e(that)h(it)g(returns)g(the)g
(\014rst)h(elemen)-5 b(t)66 b(for)g(whic)-5 b(h)581 2286
y Fo(pr)d(e)g(dic)g(ate)67 b Fp(is)56 b(true.)614 2608
y Fg(\017)83 b Fl(\(filter)i Fo(pr)-8 b(e)g(dic)g(ate)82
b(list)16 b Fl(\))83 b Fg(!)g Fo(list)614 2807 y Fg(\017)g
Fl(\(filter!)102 b Fo(pr)-8 b(e)g(dic)g(ate)82 b(list)16
b Fl(\))84 b Fg(!)f Fo(list)581 3128 y Fp(Returns)61
b(a)g(list)g(con)-5 b(taining)61 b(all)g(of)f(the)g(elemen)-5
b(ts)62 b(of)e Fo(list)77 b Fp(for)60 b(whic)-5 b(h)61
b Fo(pr)-8 b(e)g(dic)g(ate)73 b Fp(is)61 b(true.)581
3327 y(The)55 b(order)h(of)f(the)g(elemen)-5 b(ts)56
b(is)g(preserv)-5 b(ed.)74 b Fl(Filter!)h Fp(ma)-5 b(y)56
b(reuse)g(the)f(storage)g(of)g Fo(list)16 b Fp(.)614
3648 y Fg(\017)83 b Fl(\(filter-map)i Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)82
b(list)16 b Fl(\))83 b Fg(!)g Fo(list)581 3970 y Fp(The)68
b(same)h(as)g Fl(filter)g Fp(except)e(the)g(returned)h(list)h(con)-5
b(tains)69 b(the)e(results)i(of)f(applying)581 4169 y
Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)56 b Fp(instead)46 b(of)f(elemen)-5
b(ts)45 b(of)g Fo(list)17 b Fp(.)70 b Fl(\(filter-map)89
b Fo(p)98 b(l)17 b Fl(\))46 b Fp(is)f(the)g(same)h(as)f
Fl(\(filter)581 4368 y(identity)89 b(\(map)f Fo(p)97
b(l)18 b Fl(\)\))p Fp(.)614 4689 y Fg(\017)83 b Fl(\(partition-list)j
Fo(pr)-8 b(e)g(dic)g(ate)82 b(list)16 b Fl(\))84 b Fg(!)f
Fo(list)g(list)614 4889 y Fg(\017)g Fl(\(partition-list!)103
b Fo(pr)-8 b(e)g(dic)g(ate)83 b(list)16 b Fl(\))83 b
Fg(!)g Fo(list)g(list)581 5210 y Fp(The)42 b(\014rst)g(return)g(v)-9
b(alue)42 b(con)-5 b(tains)43 b(those)f(elemen)-5 b(ts)43
b Fo(list)58 b Fp(for)41 b(whic)-5 b(h)43 b Fo(pr)-8
b(e)g(dic)g(ate)54 b Fp(is)43 b(true,)h(the)581 5409
y(second)j(con)-5 b(tains)48 b(the)e(remaining)h(elemen)-5
b(ts.)72 b(The)47 b(order)f(of)h(the)f(elemen)-5 b(ts)47
b(is)g(preserv)-5 b(ed.)581 5608 y Fl(Partition-list!)77
b Fp(ma)-5 b(y)55 b(reuse)h(the)f(storage)g(of)g(the)g
Fo(list)17 b Fp(.)614 5930 y Fg(\017)83 b Fl(\(remove-duplicates)k
Fo(list)16 b Fl(\))83 b Fg(!)g Fo(list)581 6251 y Fp(Returns)66
b(its)f(argumen)-5 b(t)66 b(with)f(all)g(duplicate)g(elemen)-5
b(ts)66 b(remo)-5 b(v)g(ed.)103 b(The)65 b(\014rst)g(instance)581
6450 y(of)55 b(eac)-5 b(h)56 b(elemen)-5 b(t)55 b(is)h(preserv)-5
b(ed.)614 6771 y Fg(\017)83 b Fl(\(delq)h Fo(value)g(list)16
b Fl(\))84 b Fg(!)f Fo(list)614 6971 y Fg(\017)g Fl(\(delq!)101
b Fo(value)85 b(list)16 b Fl(\))83 b Fg(!)g Fo(list)614
7170 y Fg(\017)g Fl(\(delete)i Fo(pr)-8 b(e)g(dic)g(ate)82
b(list)16 b Fl(\))83 b Fg(!)g Fo(list)581 7491 y Fp(All)70
b(three)g(of)g(these)h(return)f Fo(list)87 b Fp(with)70
b(some)h(elemen)-5 b(ts)71 b(remo)-5 b(v)g(ed.)120 b
Fl(Delq)71 b Fp(remo)-5 b(v)g(es)71 b(all)581 7690 y(elemen)-5
b(ts)46 b Fl(eq?)71 b Fp(to)44 b Fo(value)14 b Fp(.)70
b Fl(Delq!)h Fp(do)5 b(es)45 b(the)g(same)h(and)f(ma)-5
b(y)45 b(mo)5 b(dify)45 b(the)g(list)g(argumen)-5 b(t.)581
7890 y Fl(Delete)50 b Fp(remo)-5 b(v)g(es)51 b(all)e(elemen)-5
b(ts)50 b(for)f(whic)-5 b(h)50 b Fo(pr)-8 b(e)g(dic)g(ate)61
b Fp(is)50 b(true.)71 b(Both)49 b Fl(delq)h Fp(and)g
Fl(delete)581 8089 y Fp(ma)-5 b(y)56 b(reuse)g(some)g(of)f(the)g
(storage)g(in)h(the)f(list)g(argumen)-5 b(t,)57 b(but)e(w)-5
b(on't)56 b(mo)5 b(dify)55 b(it.)614 8410 y Fg(\017)83
b Fl(\(reverse!)102 b Fo(list)16 b Fl(\))83 b Fg(!)g
Fo(list)581 8731 y Fp(Destructiv)-5 b(ely)55 b(rev)-5
b(erses)55 b Fo(list)17 b Fp(.)614 9053 y Fg(\017)83
b Fl(\(concatenate-symbol)k Fo(value)d(.)25 b(.)g(.)g
Fl(\))103 b Fg(!)83 b Fo(symb)-8 b(ol)581 9374 y Fp(Returns)63
b(the)e(sym)-5 b(b)5 b(ol)63 b(whose)f(name)h(is)f(pro)5
b(duced)62 b(b)-5 b(y)63 b(concatenating)e(the)g Fl(display)p
Fp(ed)581 9573 y(represen)-5 b(tations)56 b(of)g Fo(value)68
b Fp(.)28 b(.)g(.)g(.)581 9976 y Fl(\(concatenate-symbol)91
b('abc)c("-")h(4\))g Fp(=)-28 b Fg(\))87 b Fl('abc-4)3362
10511 y Fp(31)p eop end
%%Page: 32 40
TeXDict begin 32 39 bop 1478 1046 a Fi(5.2)269 b(Prett)-7
b(y-prin)g(ting)1478 1413 y Fp(These)55 b(are)h(in)f(the)g
Fl(pp)h Fp(structure.)1511 1716 y Fg(\017)83 b Fl(\(p)g
Fo(value)12 b Fl(\))1511 1915 y Fg(\017)83 b Fl(\(p)g
Fo(value)i(output-p)-8 b(ort)16 b Fl(\))1511 2114 y Fg(\017)83
b Fl(\(pretty-print)i Fo(value)f(output-p)-8 b(ort)84
b(p)-8 b(osition)13 b Fl(\))1478 2418 y Fp(Prett)-5 b(y-prin)g(t)89
b Fo(value)104 b Fp(The)89 b(curren)-5 b(t)90 b(output)g(p)5
b(ort)89 b(is)h(used)h(if)e(no)h(p)5 b(ort)90 b(is)g(sp)5
b(eci\014ed.)1478 2617 y Fo(Position)94 b Fp(is)83 b(the)e(starting)h
(o\013set.)154 b Fo(V)-13 b(alue)96 b Fp(will)82 b(b)5
b(e)82 b(prett)-5 b(y-prin)g(ted)82 b(to)g(the)f(righ)-5
b(t)83 b(of)1478 2816 y(this)56 b(column.)1478 3374 y
Fi(5.3)269 b(Bit)-7 b(wise)89 b(in)-7 b(teger)89 b(op)7
b(erations)1478 3740 y Fp(These)55 b(functions)g(use)h(the)e(t)-5
b(w)g(o's-complemen)g(t)57 b(represen)-5 b(tation)55
b(for)g(in)-5 b(tegers.)74 b(There)55 b(is)1478 3939
y(no)47 b(limit)h(to)e(the)h(n)-5 b(um)g(b)5 b(er)49
b(of)e(bits)g(in)h(an)f(in)-5 b(teger.)71 b(They)47 b(are)g(in)h(the)f
(structures)g Fl(bitwise)1478 4139 y Fp(and)56 b Fl(big-scheme)p
Fp(.)1511 4442 y Fg(\017)83 b Fl(\(bitwise-and)i Fo(inte)-8
b(ger)84 b(inte)-8 b(ger)18 b Fl(\))84 b Fg(!)f Fo(inte)-8
b(ger)1511 4641 y Fg(\017)83 b Fl(\(bitwise-ior)i Fo(inte)-8
b(ger)84 b(inte)-8 b(ger)18 b Fl(\))84 b Fg(!)f Fo(inte)-8
b(ger)1511 4840 y Fg(\017)83 b Fl(\(bitwise-xor)i Fo(inte)-8
b(ger)84 b(inte)-8 b(ger)18 b Fl(\))84 b Fg(!)f Fo(inte)-8
b(ger)1511 5040 y Fg(\017)83 b Fl(\(bitwise-not)i Fo(inte)-8
b(ger)18 b Fl(\))84 b Fg(!)f Fo(inte)-8 b(ger)1478 5343
y Fp(These)49 b(p)5 b(erform)50 b(v)-9 b(arious)49 b(logical)h(op)5
b(erations)50 b(on)f(in)-5 b(tegers)50 b(on)g(a)f(bit-b)-5
b(y-bit)50 b(basis.)74 b(`)p Fl(ior)p Fp(')1478 5542
y(is)56 b(inclusiv)-5 b(e)56 b(OR)g(and)g(`)p Fl(xor)p
Fp(')g(is)g(exclusiv)-5 b(e)55 b(OR.)1511 5846 y Fg(\017)83
b Fl(\(arithmetic-shift)j Fo(inte)-8 b(ger)84 b(bit-c)-8
b(ount)16 b Fl(\))84 b Fg(!)f Fo(inte)-8 b(ger)1478 6149
y Fp(Shifts)52 b(the)f(in)-5 b(teger)51 b(b)-5 b(y)51
b(the)g(giv)-5 b(en)52 b(bit)f(coun)-5 b(t,)53 b(whic)-5
b(h)52 b(m)-5 b(ust)52 b(b)5 b(e)51 b(an)h(in)-5 b(teger,)52
b(shifting)g(left)1478 6348 y(for)58 b(p)5 b(ositiv)-5
b(e)59 b(coun)-5 b(ts)59 b(and)g(righ)-5 b(t)59 b(for)g(negativ)-5
b(e)58 b(ones.)84 b(Shifting)59 b(preserv)-5 b(es)59
b(the)g(in)-5 b(teger's)1478 6548 y(sign.)1511 6851 y
Fg(\017)83 b Fl(\(bit-count)i Fo(inte)-8 b(ger)18 b Fl(\))84
b Fg(!)f Fo(inte)-8 b(ger)1478 7155 y Fp(Coun)j(ts)75
b(the)f(n)-5 b(um)g(b)5 b(er)76 b(of)e(bits)h(set)f(in)g(the)g(in)-5
b(teger.)131 b(If)74 b(the)g(argumen)-5 b(t)75 b(is)g(negativ)-5
b(e)74 b(a)1478 7354 y(bit)-5 b(wise)56 b(NOT)f(op)5
b(eration)55 b(is)h(p)5 b(erformed)55 b(b)5 b(efore)55
b(coun)-5 b(ting.)1478 7911 y Fi(5.4)269 b(Byte)90 b(v)-7
b(ectors)1478 8277 y Fp(These)76 b(are)g(homogeneous)h(v)-5
b(ectors)76 b(of)g(small)h(in)-5 b(tegers)77 b(\(0)j
Fg(\024)h Fd(i)f Fg(\024)h Fp(255\).)136 b(The)76 b(func-)1478
8477 y(tions)57 b(that)e(op)5 b(erate)56 b(on)h(them)f(are)g(analogous)
i(to)e(those)h(for)f(v)-5 b(ectors.)77 b(They)56 b(are)g(in)h(the)1478
8676 y(structure)e Fl(byte-vectors)p Fp(.)1511 8979 y
Fg(\017)83 b Fl(\(byte-vector?)102 b Fo(value)12 b Fl(\))85
b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)1511 9179 y Fg(\017)83
b Fl(\(make-byte-vector)j Fo(k)d(\014l)8 b(l)17 b Fl(\))85
b Fg(!)f Fo(byte-ve)-8 b(ctor)1511 9378 y Fg(\017)83
b Fl(\(byte-vector)i Fo(b)f(.)25 b(.)g(.)g Fl(\))102
b Fg(!)83 b Fo(byte-ve)-8 b(ctor)1511 9577 y Fg(\017)83
b Fl(\(byte-vector-length)j Fo(byte-ve)-8 b(ctor)18 b
Fl(\))85 b Fg(!)e Fo(inte)-8 b(ger)1511 9776 y Fg(\017)83
b Fl(\(byte-vector-ref)j Fo(byte-ve)-8 b(ctor)84 b(k)18
b Fl(\))84 b Fg(!)f Fo(inte)-8 b(ger)1511 9976 y Fg(\017)83
b Fl(\(byte-vector-set!)j Fo(byte-ve)-8 b(ctor)85 b(k)e(b)10
b Fl(\))4259 10511 y Fp(32)p eop end
%%Page: 33 41
TeXDict begin 33 40 bop 581 1046 a Fi(5.5)270 b(Sparse)90
b(v)-7 b(ectors)581 1410 y Fp(These)75 b(are)f(v)-5 b(ectors)74
b(that)f(gro)-5 b(w)75 b(as)g(large)f(as)h(they)e(need)h(to.)131
b(That)74 b(is,)79 b(they)74 b(can)g(b)5 b(e)581 1609
y(indexed)67 b(b)-5 b(y)66 b(arbitrarily)h(large)f(nonnegativ)-5
b(e)67 b(in)-5 b(tegers.)108 b(The)66 b(implemen)-5 b(tation)68
b(allo)-5 b(ws)581 1808 y(for)70 b(arbitrarily)g(large)g(gaps)g(b)-5
b(y)71 b(arranging)f(the)g(en)-5 b(tries)70 b(in)h(a)f(tree.)116
b(They)70 b(are)g(in)g(the)581 2008 y(structure)55 b
Fl(sparse-vectors)p Fp(.)614 2307 y Fg(\017)83 b Fl
(\(make-sparse-vector\))k Fg(!)c Fo(sp)-8 b(arse-ve)g(ctor)614
2506 y Fg(\017)83 b Fl(\(sparse-vector-ref)k Fo(sp)-8
b(arse-ve)g(ctor)83 b(k)18 b Fl(\))84 b Fg(!)f Fo(value)614
2705 y Fg(\017)g Fl(\(sparse-vector-set!)k Fo(sp)-8 b(arse-ve)g(ctor)83
b(k)h(value)12 b Fl(\))614 2905 y Fg(\017)83 b Fl
(\(sparse-vector->list)k Fo(sp)-8 b(arse-ve)g(ctor)18
b Fl(\))83 b Fg(!)h Fo(list)581 3204 y Fl(Make-sparse-vector)p
Fp(,)44 b Fl(sparse-vector-ref)p Fp(,)g(and)37 b Fl(sparse-vector-set!)
71 b Fp(are)37 b(anal-)581 3403 y(ogous)86 b(to)e Fl(make-vector)p
Fp(,)94 b Fl(vector-ref)p Fp(,)g(and)85 b Fl(vector-set!)p
Fp(,)94 b(except)84 b(that)g(the)g(in-)581 3602 y(dices)78
b(passed)g(to)e Fl(sparse-vector-ref)k Fp(and)e Fl(sparse-vector-set!)
141 b Fp(can)77 b(b)5 b(e)77 b(arbi-)581 3801 y(trarily)60
b(large.)91 b(F)-14 b(or)61 b(indices)h(whose)f(elemen)-5
b(ts)61 b(ha)-5 b(v)g(e)62 b(not)e(b)5 b(een)61 b(set)f(in)i(a)e
(sparse)i(v)-5 b(ector,)581 4001 y Fl(sparse-vector-ref)58
b Fp(returns)e Fl(#f)p Fp(.)830 4200 y Fl(Sparse-vector->list)61
b Fp(is)d(for)f(debugging:)79 b(It)57 b(returns)h(a)f(list)h(of)f(the)g
(consecutiv)-5 b(e)581 4399 y(elemen)g(ts)71 b(in)g(a)g(sparse)h(v)-5
b(ector)70 b(from)h(0)f(to)h(the)f(highest)h(elemen)-5
b(t)71 b(that)f(has)h(b)5 b(een)71 b(set.)581 4598 y(Note)54
b(that)h(the)g(list)h(will)f(also)h(include)g(all)g(the)f
Fl(#f)h Fp(elemen)-5 b(ts)56 b(for)f(the)g(unset)g(elemen)-5
b(ts.)581 5148 y Fi(5.6)270 b(Cells)581 5512 y Fp(These)59
b(hold)h(a)e(single)i(v)-9 b(alue)58 b(and)i(are)e(useful)i(when)e(a)h
(simple)h(indirection)f(is)h(required.)581 5711 y(The)54
b(system)g(uses)h(these)e(to)g(hold)i(the)e(v)-9 b(alues)54
b(of)f(lexical)g(v)-9 b(ariables)54 b(that)f(ma)-5 b(y)55
b(b)5 b(e)53 b Fl(set!)p Fp(.)614 6010 y Fg(\017)83 b
Fl(\(cell?)101 b Fo(value)12 b Fl(\))85 b Fg(!)e Fo(b)-8
b(o)g(ole)g(an)614 6209 y Fg(\017)83 b Fl(\(make-cell)i
Fo(value)12 b Fl(\))85 b Fg(!)e Fo(c)-8 b(el)8 b(l)614
6409 y Fg(\017)83 b Fl(\(cell-ref)i Fo(c)-8 b(el)8 b(l)17
b Fl(\))85 b Fg(!)e Fo(value)614 6608 y Fg(\017)g Fl(\(cell-set!)i
Fo(c)-8 b(el)8 b(l)85 b(value)12 b Fl(\))581 7157 y Fi(5.7)270
b(Queues)581 7521 y Fp(These)70 b(are)f(ordinary)g(\014rst-in,)74
b(\014rst-out)c(queues.)116 b(The)69 b(pro)5 b(cedures)69
b(are)g(in)h(structure)581 7720 y Fl(queues)p Fp(.)614
8019 y Fg(\017)83 b Fl(\(make-queue\))i Fg(!)f Fo(queue)614
8219 y Fg(\017)f Fl(\(queue?)102 b Fo(value)12 b Fl(\))84
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614 8418 y Fg(\017)83
b Fl(\(queue-empty?)103 b Fo(queue)12 b Fl(\))85 b Fg(!)e
Fo(b)-8 b(o)g(ole)g(an)614 8617 y Fg(\017)83 b Fl(\(enqueue!)i
Fo(queue)f(value)12 b Fl(\))614 8817 y Fg(\017)83 b Fl(\(dequeue!)102
b Fo(queue)12 b Fl(\))85 b Fg(!)e Fo(value)581 9116 y
Fl(Make-queue)i Fp(creates)e(an)g(empt)-5 b(y)83 b(queue,)90
b Fl(queue?)159 b Fp(is)83 b(a)h(predicate)e(for)h(iden)-5
b(tifying)581 9315 y(queues,)63 b Fl(queue-empty?)94
b Fp(tells)62 b(y)-5 b(ou)61 b(if)h(a)f(queue)g(is)h(empt)-5
b(y)-14 b(,)63 b Fl(enqueue!)93 b Fp(and)62 b Fl(dequeue!)581
9514 y Fp(add)56 b(and)g(remo)-5 b(v)g(e)56 b(v)-9 b(alues.)614
9813 y Fg(\017)83 b Fl(\(queue-length)j Fo(queue)12 b
Fl(\))85 b Fg(!)e Fo(inte)-8 b(ger)614 10012 y Fg(\017)83
b Fl(\(queue->list)i Fo(queue)12 b Fl(\))86 b Fg(!)d
Fo(values)3362 10511 y Fp(33)p eop end
%%Page: 34 42
TeXDict begin 34 41 bop 1511 1046 a Fg(\017)83 b Fl(\(list->queue)i
Fo(values)14 b Fl(\))84 b Fg(!)f Fo(queue)1511 1245 y
Fg(\017)g Fl(\(delete-from-queue!)103 b Fo(queue)85 b(value)12
b Fl(\))85 b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)1478 1558
y Fl(Queue-length)77 b Fp(returns)e(the)f(n)-5 b(um)g(b)5
b(er)76 b(of)f(v)-9 b(alues)74 b(in)h Fo(queue)14 b Fp(.)132
b Fl(Queue->list)77 b Fp(returns)1478 1757 y(the)j(v)-9
b(alues)81 b(in)g Fo(queue)95 b Fp(as)81 b(a)g(list,)87
b(in)81 b(the)f(order)h(in)g(whic)-5 b(h)82 b(the)e(v)-9
b(alues)81 b(w)-5 b(ere)81 b(added.)1478 1957 y Fl(List->queue)39
b Fp(returns)e(a)g(queue)f(con)-5 b(taining)38 b Fo(values)15
b Fp(,)41 b(preserving)c(their)g(order.)67 b Fl(Delete-from-queue)1478
2156 y Fp(remo)-5 b(v)g(es)79 b(the)f(\014rst)h(instance)f(of)g
Fo(value)92 b Fp(from)78 b Fl(queue)p Fp(,)85 b(using)d
Fl(eq?)143 b Fp(for)78 b(comparisons.)1478 2355 y Fl(Delete-from-queue)
58 b Fp(returns)e Fl(#t)g Fp(if)f Fo(value)69 b Fp(is)56
b(found)g(and)f Fl(#f)h Fp(if)f(it)g(is)h(not.)1478 2929
y Fi(5.8)269 b(Arra)-7 b(ys)1478 3302 y Fp(These)39 b(pro)-5
b(vide)40 b(N-dimensional,)k(zero-based)d(arra)-5 b(ys)40
b(and)f(are)g(in)h(the)f(structure)g Fl(arrays)p Fp(.)1478
3501 y(The)55 b(arra)-5 b(y)56 b(in)-5 b(terface)54 b(is)i(deriv)-5
b(ed)56 b(from)g(one)f(in)-5 b(v)g(en)g(ted)56 b(b)-5
b(y)56 b(Alan)f(Ba)-5 b(wden.)1511 3814 y Fg(\017)83
b Fl(\(make-array)i Fo(value)f(dimension)3909 3839 y
Fj(0)4067 3814 y Fo(.)25 b(.)g(.)g Fl(\))103 b Fg(!)83
b Fo(arr)-8 b(ay)1511 4013 y Fg(\017)83 b Fl(\(array)h
Fo(dimensions)f(element)3726 4038 y Fj(0)3886 4013 y
Fo(.)25 b(.)g(.)g Fl(\))103 b Fg(!)83 b Fo(arr)-8 b(ay)1511
4212 y Fg(\017)83 b Fl(\(copy-array)i Fo(arr)-8 b(ay)15
b Fl(\))82 b Fg(!)h Fo(arr)-8 b(ay)1478 4525 y Fl(Make-array)57
b Fp(mak)-5 b(es)56 b(a)f(new)h(arra)-5 b(y)55 b(with)g(the)g(giv)-5
b(en)56 b(dimensions,)h(eac)-5 b(h)56 b(of)f(whic)-5
b(h)56 b(m)-5 b(ust)1478 4724 y(b)5 b(e)43 b(a)g(non-negativ)-5
b(e)43 b(in)-5 b(teger.)70 b(Ev)-5 b(ery)43 b(elemen)-5
b(t)43 b(is)h(initially)f(set)g(to)g Fo(value)12 b Fp(.)72
b Fl(Array)44 b Fp(Returns)1478 4924 y(a)67 b(new)g(arra)-5
b(y)67 b(with)g(the)g(giv)-5 b(en)67 b(dimensions)i(and)f(elemen)-5
b(ts.)109 b Fo(Dimensions)81 b Fp(m)-5 b(ust)69 b(b)5
b(e)66 b(a)1478 5123 y(list)48 b(of)f(non-negativ)-5
b(e)48 b(in)-5 b(tegers,)49 b(The)f(n)-5 b(um)g(b)5 b(er)48
b(of)g(elemen)-5 b(ts)48 b(should)g(b)5 b(e)47 b(the)g(equal)h(to)f
(the)1478 5322 y(pro)5 b(duct)55 b(of)g(the)g(dimensions.)76
b(The)55 b(elemen)-5 b(ts)56 b(are)g(stored)f(in)h(ro)-5
b(w-ma)9 b(jor)56 b(order.)1478 5673 y Fl(\(make-array)89
b('a)e(2)h(3\))f Fg(!)g(f)p Fl(Array)i(2)e(3)p Fg(g)1478
6071 y Fl(\(array)h('\(2)g(3\))f('a)h('b)f('c)h('d)f('e)h('f\))1826
6271 y Fg(!)g(f)p Fl(Array)g(2)f(3)p Fg(g)1727 6617 y
Fl(Copy-array)55 b Fp(returns)f(a)g(cop)-5 b(y)54 b(of)66
b Fo(arr)-8 b(ay)15 b Fp(.)72 b(The)54 b(cop)-5 b(y)54
b(is)g(iden)-5 b(tical)54 b(to)g(the)f Fo(arr)-8 b(ay)67
b Fp(but)1478 6816 y(do)5 b(es)55 b(not)h(share)f(storage)h(with)f(it.)
1511 7129 y Fg(\017)83 b Fl(\(array?)101 b Fo(value)12
b Fl(\))85 b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)1478 7442
y Fp(Returns)56 b Fl(#t)f Fp(if)69 b Fo(value)g Fp(is)56
b(an)f(arra)-5 b(y)-14 b(.)1511 7755 y Fg(\017)83 b Fl(\(array-ref)i
Fo(arr)-8 b(ay)82 b(index)3479 7780 y Fj(0)3637 7755
y Fo(.)25 b(.)g(.)g Fl(\))103 b Fg(!)83 b Fo(value)1511
7954 y Fg(\017)g Fl(\(array-set!)i Fo(arr)-8 b(ay)82
b(value)i(index)4018 7979 y Fj(0)4176 7954 y Fo(.)25
b(.)g(.)g Fl(\))1511 8153 y Fg(\017)83 b Fl(\(array->vector)i
Fo(arr)-8 b(ay)15 b Fl(\))82 b Fg(!)h Fo(ve)-8 b(ctor)1511
8352 y Fg(\017)83 b Fl(\(array-shape)i Fo(arr)-8 b(ay)15
b Fl(\))82 b Fg(!)h Fo(list)1478 8665 y Fl(Array-ref)73
b Fp(returns)g(the)e(sp)5 b(eci\014ed)73 b(arra)-5 b(y)72
b(elemen)-5 b(t)72 b(and)h Fl(array-set!)125 b Fp(replaces)73
b(the)1478 8865 y(elemen)-5 b(t)55 b(with)g Fo(value)12
b Fp(.)1478 9215 y Fl(\(let)88 b(\(\(a)f(\(array)i('\(2)e(3\))h('a)f
('b)h('c)f('d)h('e)f('f\)\)\))1652 9415 y(\(let)h(\(\(x)g(\(array-ref)h
(a)e(0)g(1\)\)\))1826 9614 y(\(array-set!)j(a)d('g)g(0)h(1\))1826
9813 y(\(list)h(x)e(\(array-ref)i(a)e(0)g(1\)\)\)\))1826
10012 y Fg(!)h Fl('\(b)f(g\))4259 10511 y Fp(34)p eop
end
%%Page: 35 43
TeXDict begin 35 42 bop 830 1046 a Fl(Array->vector)72
b Fp(returns)e(a)f(v)-5 b(ector)69 b(con)-5 b(taining)71
b(the)e(elemen)-5 b(ts)70 b(of)82 b Fo(arr)-8 b(ay)83
b Fp(in)70 b(ro)-5 b(w-)581 1245 y(ma)9 b(jor)56 b(order.)74
b Fl(Array-shape)57 b Fp(returns)f(the)f(dimensions)i(of)f(the)f(arra)
-5 b(y)55 b(as)h(a)f(list.)614 1545 y Fg(\017)83 b Fl
(\(make-shared-array)k Fo(arr)-8 b(ay)81 b(line)-8 b(ar-map)84
b(dimension)4493 1570 y Fj(0)4651 1545 y Fo(.)25 b(.)g(.)g
Fl(\))103 b Fg(!)83 b Fo(arr)-8 b(ay)581 1846 y Fl(Make-shared-array)83
b Fp(mak)-5 b(es)81 b(a)f(new)g(arra)-5 b(y)80 b(that)g(shares)h
(storage)f(with)g Fo(arr)-8 b(ay)93 b Fp(and)581 2045
y(uses)57 b Fo(line)-8 b(ar-map)66 b Fp(to)55 b(map)h(indexes)g(to)e
(elemen)-5 b(ts.)75 b Fo(Line)-8 b(ar-map)66 b Fp(m)-5
b(ust)57 b(accept)d(as)i(man)-5 b(y)581 2244 y(argumen)g(ts)68
b(as)f(the)g(n)-5 b(um)g(b)5 b(er)68 b(of)79 b Fo(dimension)13
b Fp(s)67 b(giv)-5 b(en)67 b(and)g(m)-5 b(ust)68 b(return)f(a)f(list)h
(of)g(non-)581 2443 y(negativ)-5 b(e)55 b(in)-5 b(tegers)56
b(that)f(are)g(v)-9 b(alid)55 b(indexes)h(in)-5 b(to)56
b Fo(arr)-8 b(ay)15 b Fp(.)581 2777 y Fl(\(array-ref)89
b(\(make-shared-array)h(a)e(f)f(i0)h(i1)f(...\))1540
2976 y(j0)h(j1)f(...\))581 3310 y Fp(is)56 b(equiv)-9
b(alen)k(t)55 b(to)581 3643 y Fl(\(apply)88 b(array-ref)h(a)e(\(f)h(j0)
f(j1)h(...\)\))830 3977 y Fp(As)37 b(an)g(example,)k(the)c(follo)-5
b(wing)37 b(function)g(mak)-5 b(es)38 b(the)e(transp)5
b(ose)38 b(of)e(a)h(t)-5 b(w)g(o-dimensional)581 4176
y(arra)g(y:)581 4510 y Fl(\(define)89 b(\(transpose)f(array\))755
4709 y(\(let)g(\(\(shape)h(\(array-shape)g(array\)\)\))930
4908 y(\(make-shared-array)h(array)2586 5108 y(\(lambda)e(\(x)g(y\))
2760 5307 y(\(list)g(y)g(x\)\))2586 5506 y(\(cadr)g(shape\))2586
5705 y(\(car)g(shape\)\)\)\))581 6104 y(\(array->vector)755
6303 y(\(transpose)930 6502 y(\(array)g('\(2)g(3\))f('a)h('b)f('c)h('d)
f('e)h('f\)\)\))1104 6702 y Fg(!)f Fl('\(a)h(d)f(b)h(e)f(c)g(f\))581
7253 y Fi(5.9)270 b(Records)581 7617 y Fp(New)57 b(t)-5
b(yp)5 b(es)57 b(can)h(b)5 b(e)57 b(constructed)h(using)g(the)g
Fl(define-record-type)i Fp(macro)e(from)g(the)581 7817
y Fl(define-record-types)h Fp(structure)c(The)g(general)h(syn)-5
b(tax)55 b(is:)581 8150 y Fl(\(define-record-type)91
b Fo(tag)102 b(typ)-8 b(e-name)755 8350 y Fl(\()p Fo(c)g
(onstructor-name)102 b(\014eld-tag)i Fl(...\))755 8549
y Fo(pr)-8 b(e)g(dic)g(ate-name)755 8748 y Fl(\()p Fo(\014eld-tag)104
b(ac)-8 b(c)g(essor-name)101 b Fl([)p Fo(mo)-8 b(di\014er-name)12
b Fl(]\))755 8947 y(...\))581 9281 y Fp(This)56 b(mak)-5
b(es)56 b(the)f(follo)-5 b(wing)56 b(de\014nitions:)614
9614 y Fg(\017)83 b Fo(typ)-8 b(e-name)4473 b Fp(t)-5
b(yp)5 b(e)614 9813 y Fg(\017)83 b Fl(\()p Fo(c)-8 b(onstructor-name)98
b(\014eld-init)84 b(.)25 b(.)g(.)g Fl(\))103 b Fg(!)83
b Fo(typ)-8 b(e-name)614 10012 y Fg(\017)83 b Fl(\()p
Fo(pr)-8 b(e)g(dic)g(ate-name)96 b(value)12 b Fl(\))85
b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)3362 10511 y Fp(35)p
eop end
%%Page: 36 44
TeXDict begin 36 43 bop 1511 1046 a Fg(\017)83 b Fl(\()p
Fo(ac)-8 b(c)g(essor-name)96 b(typ)-8 b(e-name)12 b Fl(\))84
b Fg(!)f Fo(value)1511 1245 y Fg(\017)g Fl(\()p Fo(mo)-8
b(di\014er-name)96 b(typ)-8 b(e-name)84 b(value)12 b
Fl(\))1478 1582 y Fo(T)-13 b(yp)-8 b(e-name)68 b Fp(is)57
b(the)e(record)g(t)-5 b(yp)5 b(e)55 b(itself,)h(and)g(can)g(b)5
b(e)56 b(used)g(to)f(sp)5 b(ecify)55 b(a)h(prin)-5 b(t)56
b(metho)5 b(d)1478 1781 y(\(see)80 b(b)5 b(elo)-5 b(w\).)151
b Fo(Constructor-name)95 b Fp(is)82 b(a)f(constructor)g(that)f(accepts)
h(v)-9 b(alues)81 b(for)g(the)1478 1981 y(\014elds)46
b(whose)f(tags)g(are)g(sp)5 b(eci\014ed.)71 b Fo(Pr)-8
b(e)g(dic)g(ate-name)58 b Fp(is)45 b(a)g(predicate)g(that)g(returns)g
Fl(#t)h Fp(for)1478 2180 y(elemen)-5 b(ts)43 b(of)f(the)g(t)-5
b(yp)5 b(e)42 b(and)h Fl(#f)g Fp(for)g(ev)-5 b(erything)42
b(else.)69 b(The)43 b Fo(ac)-8 b(c)g(essor-name)12 b
Fp(s)44 b(retriev)-5 b(e)42 b(the)1478 2379 y(v)-9 b(alues)59
b(of)f(\014elds,)i(and)f(the)g Fo(mo)-8 b(di\014er-name)12
b Fp('s)60 b(up)5 b(date)58 b(them.)84 b Fo(T)-13 b(ag)74
b Fp(is)59 b(used)g(in)g(prin)-5 b(ting)1478 2578 y(instances)57
b(of)g(the)f(record)h(t)-5 b(yp)5 b(e)56 b(and)h(the)f
Fo(\014eld-tag)15 b Fp(s)59 b(are)e(used)g(in)g(the)g(insp)5
b(ector)56 b(and)i(to)1478 2778 y(matc)-5 b(h)56 b(constructor)f
(argumen)-5 b(ts)56 b(with)f(\014elds.)1511 3081 y Fg(\017)83
b Fl(\(define-record-discloser)k Fo(typ)-8 b(e)83 b(discloser)18
b Fl(\))1478 3385 y(Define-record-discloser)77 b Fp(determines)d(ho)-5
b(w)74 b(records)f(of)h(t)-5 b(yp)5 b(e)72 b Fo(typ)-8
b(e)85 b Fp(are)74 b(prin)-5 b(ted.)1478 3584 y Fo(Discloser)97
b Fp(should)79 b(b)5 b(e)78 b(pro)5 b(cedure)78 b(whic)-5
b(h)79 b(tak)-5 b(es)78 b(a)g(single)h(record)f(of)g(t)-5
b(yp)5 b(e)78 b Fo(typ)-8 b(e)90 b Fp(and)1478 3783 y(returns)68
b(a)f(list)h(whose)f(car)h(is)g(a)f(sym)-5 b(b)5 b(ol.)111
b(The)67 b(record)g(will)h(b)5 b(e)67 b(prin)-5 b(ted)68
b(as)g(the)f(v)-9 b(alue)1478 3983 y(returned)55 b(b)-5
b(y)58 b Fo(discloser)74 b Fp(with)55 b(curly)g(braces)h(used)g
(instead)g(of)f(the)g(usual)i(paren)-5 b(thesis.)1727
4184 y(F)-14 b(or)56 b(example)1478 4522 y Fl(\(define-record-type)90
b(pare)e(:pare)1652 4721 y(\(kons)g(x)g(y\))1652 4920
y(pare?)1652 5120 y(\(x)g(kar)f(set-kar!\))1652 5319
y(\(y)h(kdr\)\))1478 5656 y Fp(de\014nes)56 b Fl(kons)h
Fp(to)e(b)5 b(e)56 b(a)f(constructor,)h Fl(kar)h Fp(and)f
Fl(kdr)g Fp(to)f(b)5 b(e)56 b(accessors,)h Fl(set-kar!)76
b Fp(to)56 b(b)5 b(e)1478 5855 y(a)68 b(mo)5 b(di\014er,)72
b(and)d Fl(pare?)114 b Fp(to)68 b(b)5 b(e)68 b(a)g(predicate)g(for)g(a)
h(new)f(t)-5 b(yp)5 b(e)67 b(of)h(ob)9 b(ject.)113 b(The)68
b(t)-5 b(yp)5 b(e)1478 6054 y(itself)55 b(is)h(named)g
Fl(:pare)p Fp(.)75 b Fl(Pare)56 b Fp(is)g(a)f(tag)g(used)h(in)g(prin)-5
b(ting)56 b(the)f(new)h(ob)9 b(jects.)1727 6255 y(By)72
b(default,)77 b(the)c(new)g(ob)9 b(jects)73 b(prin)-5
b(t)73 b(as)h Fl(#)p Fg(f)p Fl(Pare)p Fg(g)p Fp(.)127
b(The)73 b(prin)-5 b(t)74 b(metho)5 b(d)73 b(can)g(b)5
b(e)1478 6454 y(mo)g(di\014ed)56 b(using)j Fl(define-record-discloser)p
Fp(:)1478 6793 y Fl(\(define-record-discloser)91 b(:pare)1652
6992 y(\(lambda)e(\(p\))e(`\(pare)h(,\(kar)g(p\))g(,\(kdr)g(p\)\)\)\))
1478 7329 y Fp(will)55 b(cause)h(the)f(result)h(of)68
b Fl(\(kons)88 b(1)f(2\))56 b Fp(to)f(prin)-5 b(t)56
b(as)g Fl(#)p Fg(f)p Fl(Pare)88 b(1)f(2)p Fg(g)p Fp(.)1727
7530 y Fl(Define-record-resumer)56 b Fp(\(section)d(8.7.3\))g(can)g(b)5
b(e)52 b(used)i(to)e(con)-5 b(trol)53 b(ho)-5 b(w)54
b(records)1478 7729 y(are)h(stored)h(in)f(heap)h(images.)1478
8202 y Fc(5.9.1)225 b(Lo)-6 b(w-lev)g(el)75 b(access)g(to)g(records)
1478 8512 y Fp(Records)59 b(are)f(implemen)-5 b(ted)60
b(using)f(primitiv)-5 b(e)59 b(ob)9 b(jects)59 b(exactly)e(analogous)i
(to)f(v)-5 b(ectors.)1478 8711 y(Ev)g(ery)54 b(record)g(has)i(a)e
(record)h(t)-5 b(yp)5 b(e)54 b(\(whic)-5 b(h)55 b(is)g(another)f
(record\))g(in)h(the)g(\014rst)g(slot.)73 b(Note)1478
8910 y(that)41 b(use)i(of)f(these)h(pro)5 b(cedures,)45
b(esp)5 b(ecially)44 b Fl(record-set!)p Fp(,)j(breaks)c(the)f(record)g
(abstrac-)1478 9109 y(tion)55 b(describ)5 b(ed)56 b(ab)5
b(o)-5 b(v)g(e;)55 b(caution)h(is)g(advised.)1727 9310
y(These)f(pro)5 b(cedures)56 b(are)f(in)h(the)f(structure)g
Fl(records)p Fp(.)1511 9614 y Fg(\017)83 b Fl(\(make-record)i
Fo(n)f(value)12 b Fl(\))84 b Fg(!)f Fo(r)-8 b(e)g(c)g(or)g(d)1511
9813 y Fg(\017)83 b Fl(\(record)h Fo(value)g(.)25 b(.)g(.)g
Fl(\))103 b Fg(!)83 b Fo(r)-8 b(e)g(c)g(or)g(d-ve)g(ctor)1511
10012 y Fg(\017)83 b Fl(\(record?)101 b Fo(value)12 b
Fl(\))85 b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)4259 10511 y
Fp(36)p eop end
%%Page: 37 45
TeXDict begin 37 44 bop 614 1046 a Fg(\017)83 b Fl(\(record-length)j
Fo(r)-8 b(e)g(c)g(or)g(d)17 b Fl(\))82 b Fg(!)h Fo(inte)-8
b(ger)614 1245 y Fg(\017)83 b Fl(\(record-type)i Fo(r)-8
b(e)g(c)g(or)g(d)17 b Fl(\))82 b Fg(!)h Fo(value)614
1445 y Fg(\017)g Fl(\(record-ref)i Fo(r)-8 b(e)g(c)g(or)g(d)82
b(i)17 b Fl(\))83 b Fg(!)g Fo(value)614 1644 y Fg(\017)g
Fl(\(record-set!)i Fo(r)-8 b(e)g(c)g(or)g(d)82 b(i)h(value)12
b Fl(\))581 1927 y Fp(These)62 b(the)f(same)h(as)g(the)f(standard)h
Fl(vector-)g Fp(pro)5 b(cedures)62 b(except)e(that)h(they)g(op)5
b(erate)581 2127 y(on)49 b(records.)73 b(The)49 b(v)-9
b(alue)48 b(returned)h(b)-5 b(y)52 b Fl(record-length)f
Fp(includes)f(the)f(slot)g(holding)h(the)581 2326 y(record's)56
b(t)-5 b(yp)5 b(e.)73 b Fl(\(record-type)89 b Fo(x)20
b Fl(\))56 b Fp(is)g(equiv)-9 b(alen)k(t)55 b(to)g Fl(\(record-ref)89
b Fo(x)107 b Fl(0\))p Fp(.)581 2788 y Fc(5.9.2)225 b(Record)74
b(t)-6 b(yp)6 b(es)581 3094 y Fp(Record)37 b(t)-5 b(yp)5
b(es)37 b(are)g(themselv)-5 b(es)37 b(records)h(of)e(a)h(particular)g
(t)-5 b(yp)5 b(e)36 b(\(the)g(\014rst)i(slot)f(of)49
b Fl(:record-type)581 3293 y Fp(p)5 b(oin)-5 b(ts)69
b(to)f(itself)13 b(\).)112 b(A)68 b(record)g(t)-5 b(yp)5
b(e)68 b(con)-5 b(tains)69 b(four)f(v)-9 b(alues:)100
b(the)68 b(name)h(of)f(the)g(record)581 3493 y(t)-5 b(yp)5
b(e,)61 b(a)f(list)g(of)g(the)g(names)h(its)f(\014elds,)j(and)d(pro)5
b(cedures)61 b(for)f(disclosing)i(and)e(resuming)581
3692 y(records)72 b(of)e(that)h(t)-5 b(yp)5 b(e.)120
b(Pro)5 b(cedures)71 b(for)g(manipulating)h(them)f(are)g(in)g(the)g
(structure)581 3891 y Fl(record-types)p Fp(.)614 4175
y Fg(\017)83 b Fl(\(make-record-type)j Fo(name)e(\014eld-names)14
b Fl(\))84 b Fg(!)f Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)614
4374 y Fg(\017)83 b Fl(\(record-type?)103 b Fo(value)12
b Fl(\))84 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614 4573 y
Fg(\017)83 b Fl(\(record-type-name)j Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)
12 b Fl(\))83 b Fg(!)g Fo(symb)-8 b(ol)614 4772 y Fg(\017)83
b Fl(\(record-type-field-names)88 b Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)12
b Fl(\))82 b Fg(!)h Fo(symb)-8 b(ols)614 5140 y Fg(\017)83
b Fl(\(record-constructor)k Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)81
b(\014eld-names)14 b Fl(\))85 b Fg(!)e Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)
614 5340 y Fg(\017)83 b Fl(\(record-predicate)j Fo(r)-8
b(e)g(c)g(or)g(d-typ)g(e)12 b Fl(\))83 b Fg(!)g Fo(pr)-8
b(o)g(c)g(e)g(dur)g(e)614 5539 y Fg(\017)83 b Fl(\(record-accessor)j
Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)82 b(\014eld-name)12
b Fl(\))85 b Fg(!)e Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)614
5738 y Fg(\017)83 b Fl(\(record-modifier)j Fo(r)-8 b(e)g(c)g(or)g
(d-typ)g(e)82 b(\014eld-name)12 b Fl(\))85 b Fg(!)e Fo(pr)-8
b(o)g(c)g(e)g(dur)g(e)581 6022 y Fp(These)37 b(pro)5
b(cedures)38 b(construct)e(the)h(usual)h(record-manipulating)g(pro)5
b(cedures.)68 b Fl(Record-constructor)581 6221 y Fp(returns)50
b(a)f(constructor)g(that)g(is)h(passed)g(the)f(initial)h(v)-9
b(alues)49 b(for)g(the)g(\014elds)i(sp)5 b(eci\014ed)49
b(and)581 6420 y(returns)61 b(a)f(new)g(record.)88 b
Fl(Record-predicate)62 b Fp(returns)f(a)f(predicate)g(that)f(return)h
(true)581 6620 y(when)46 b(passed)g(a)f(record)g(of)g(t)-5
b(yp)5 b(e)44 b Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)57 b
Fp(and)45 b(false)h(otherwise.)70 b Fl(Record-accessor)581
6819 y Fp(and)59 b Fl(record-modifier)j Fp(return)d(pro)5
b(cedures)59 b(that)f(reference)g(and)h(set)g(the)f(giv)-5
b(en)59 b(\014eld)581 7018 y(in)d(records)g(of)f(the)g(approriate)g(t)
-5 b(yp)5 b(e.)614 7302 y Fg(\017)83 b Fl(\(define-record-discloser)88
b Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)81 b(discloser)18
b Fl(\))614 7501 y Fg(\017)83 b Fl(\(define-record-resumer)k
Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)82 b(r)-8 b(esumer)18
b Fl(\))581 7785 y(Record-types)39 b Fp(is)f(the)e(initial)i(exp)5
b(orter)35 b(of)50 b Fl(define-record-discloser)41 b
Fp(\(re-exp)5 b(orted)581 7984 y(b)-5 b(y)66 b Fl(define-record-types)g
Fp(describ)5 b(ed)64 b(ab)5 b(o)-5 b(v)g(e\))63 b(and)g
Fl(define-record-resumer)k Fp(\(re-)581 8183 y(exp)5
b(orted)54 b(b)-5 b(y)58 b Fl(external-calls)g Fp(\(section)d
(8.7.3\)\).)830 8382 y(The)60 b(pro)5 b(cedures)60 b(describ)5
b(ed)60 b(in)g(this)h(section)e(can)h(b)5 b(e)60 b(used)g(to)g
(de\014ne)g(new)f(record-)581 8582 y(t)-5 b(yp)5 b(e-de\014ning)56
b(macros.)581 8899 y Fl(\(define-record-type)91 b(pare)c(:pare)755
9098 y(\(kons)i(x)e(y\))755 9297 y(pare?)755 9496 y(\(x)h(kar)g
(set-kar!\))755 9696 y(\(y)g(kdr\)\))581 10012 y Fp(is)56
b(\(sematically\))f(equiv)-9 b(alen)k(t)54 b(to)3362
10511 y(37)p eop end
%%Page: 38 46
TeXDict begin 38 45 bop 1478 1046 a Fl(\(define)88 b(:pare)g
(\(make-record-type)i('pare)e('\(x)g(y\)\)\))1478 1245
y(\(define)g(kons)g(\(record-constructor)i(:pare)f('\(x)e(y\)\)\))1478
1445 y(\(define)h(kar)g(\(record-accessor)i(:pare)e('x\)\))1478
1644 y(\(define)g(set-kar!)h(\(record-modifier)h(:pare)e('x\)\))1478
1843 y(\(define)g(kdr)g(\(record-accessor)i(:pare)e('y\)\))1727
2180 y Fp(The)63 b(\\\(seman)-5 b(tically\)")63 b(ab)5
b(o)-5 b(v)g(e)63 b(is)h(b)5 b(ecause)63 b Fl(define-record-type)k
Fp(adds)d(declara-)1478 2380 y(tions,)50 b(whic)-5 b(h)50
b(allo)-5 b(ws)50 b(the)e(t)-5 b(yp)5 b(e)48 b(c)-5 b(hec)g(k)g(er)49
b(to)f(detect)g(some)h(misuses)i(of)d(records,)j(and)e(uses)1478
2579 y(more)j(e\016cien)-5 b(t)52 b(de\014nitions)h(for)f(the)f
(constructor,)i(accessors,)g(and)g(mo)5 b(di\014ers.)74
b(Ignoring)1478 2778 y(the)43 b(declarations,)j(whic)-5
b(h)44 b(will)g(ha)-5 b(v)g(e)44 b(to)f(w)-5 b(ait)44
b(for)f(another)g(edition)h(of)f(the)g(man)-5 b(ual,)48
b(what)1478 2977 y(the)55 b(ab)5 b(o)-5 b(v)g(e)55 b(example)h
(actually)e(expands)i(in)-5 b(to)56 b(is:)1478 3316 y
Fl(\(define)88 b(:pare)g(\(make-record-type)i('pare)e('\(x)g(y\)\)\))
1478 3516 y(\(define)g(\(kons)g(x)g(y\))f(\(record)h(:pare)g(x)g(y\)\))
1478 3715 y(\(define)g(\(kar)g(r\))g(\(checked-record-ref)i(r)d(:pare)h
(1\)\))1478 3914 y(\(define)g(\(set-kar!)h(r)e(new\))1652
4113 y(\(checked-record-set!)k(r)c(:pare)h(1)f(new\)\))1478
4313 y(\(define)h(\(kdr)g(r\))g(\(checked-record-ref)i(r)d(:pare)h
(2\)\))1478 4650 y(Checked-record-ref)50 b Fp(and)d Fl
(Checked-record-set!)74 b Fp(are)47 b(lo)-5 b(w-lev)g(el)48
b(pro)5 b(cedures)47 b(that)1478 4849 y(c)-5 b(hec)g(k)54
b(the)f(t)-5 b(yp)5 b(e)53 b(of)g(the)h(record)f(and)h(access)g(or)g
(mo)5 b(dify)54 b(it)f(using)i(a)f(single)g(VM)f(instruc-)1478
5048 y(tion.)1478 5607 y Fi(5.10)270 b(Finite)89 b(record)h(t)-7
b(yp)7 b(es)1478 5974 y Fp(The)61 b(structure)h Fl(finite-types)i
Fp(has)e(t)-5 b(w)g(o)62 b(macros)h(for)e(de\014ning)i(`\014nite')f
(record)f(t)-5 b(yp)5 b(es.)1478 6173 y(These)65 b(are)g(record)g(t)-5
b(yp)5 b(es)64 b(for)h(whic)-5 b(h)65 b(there)g(are)g(a)f(\014xed)h(n)
-5 b(um)g(b)5 b(er)67 b(of)d(instances,)k(all)e(of)1478
6372 y(whic)-5 b(h)68 b(are)g(created)f(at)h(the)g(same)g(time)g(as)g
(the)g(record)g(t)-5 b(yp)5 b(e)67 b(itself.)112 b(The)68
b(syn)-5 b(tax)68 b(for)1478 6571 y(de\014ning)56 b(an)g(en)-5
b(umerated)56 b(t)-5 b(yp)5 b(e)54 b(is:)1478 6910 y
Fl(\(define-enumerated-type)91 b Fo(tag)102 b(typ)-8
b(e-name)1652 7109 y(pr)g(e)g(dic)g(ate-name)1652 7309
y(ve)g(ctor-of-instanc)g(es-name)1652 7508 y(name-ac)g(c)g(essor)1652
7707 y(index-ac)g(c)g(essor)1652 7907 y Fl(\()p Fo(instanc)g(e-name)102
b Fl(...\)\))1478 8244 y Fp(This)67 b(de\014nes)g(a)g(new)f(record)g(t)
-5 b(yp)5 b(e,)69 b(b)5 b(ound)67 b(to)f Fo(typ)-8 b(e-name)12
b Fp(,)70 b(with)c(as)h(man)-5 b(y)68 b(instances)1478
8443 y(as)k(there)f(are)h Fo(instanc)-8 b(e-name)12 b
Fp('s.)126 b Fo(V)-13 b(e)-8 b(ctor-of-instanc)g(es-name)87
b Fp(is)73 b(b)5 b(ound)72 b(to)f(a)h(v)-5 b(ector)1478
8642 y(con)g(taining)74 b(the)f(instances)h(of)f(the)g(t)-5
b(yp)5 b(e)72 b(in)i(the)f(same)h(order)f(as)h(the)f
Fo(instanc)-8 b(e-name)1478 8842 y Fp(list.)155 b Fo(T)-13
b(ag)98 b Fp(is)83 b(b)5 b(ound)83 b(to)e(a)i(macro)g(that)e(when)i
(giv)-5 b(en)83 b(an)f Fo(instanc)-8 b(e-name)97 b Fp(expands)1478
9041 y(in)-5 b(to)73 b(an)g(expression)h(that)e(returns)h(corresp)5
b(onding)74 b(instance.)126 b(The)73 b(name)g(lo)5 b(okup)73
b(is)1478 9240 y(done)52 b(at)g(macro)h(expansion)g(time.)73
b Fo(Pr)-8 b(e)g(dic)g(ate-name)64 b Fp(is)53 b(a)g(predicate)f(for)g
(the)g(new)g(t)-5 b(yp)5 b(e.)1478 9439 y Fo(Name-ac)-8
b(c)g(essor)96 b Fp(and)78 b Fo(index-ac)-8 b(c)g(essor)97
b Fp(are)77 b(accessors)i(for)f(the)f(name)h(and)h(index)e(\(in)1478
9639 y Fo(ve)-8 b(ctor-of-instanc)g(es)14 b Fp(\))56
b(of)f(instances)i(of)e(the)g(t)-5 b(yp)5 b(e.)1478 10012
y Fl(\(define-enumerated-type)91 b(color)d(:color)4259
10511 y Fp(38)p eop end
%%Page: 39 47
TeXDict begin 39 46 bop 755 1046 a Fl(color?)755 1245
y(colors)755 1445 y(color-name)755 1644 y(color-index)755
1843 y(\(black)89 b(white)f(purple)g(maroon\)\))581 2242
y(\(color-name)h(\(vector-ref)g(colors)f(0\)\))g Fg(!)f
Fl(black)581 2441 y(\(color-name)i(\(color)f(white\)\))786
b Fg(!)87 b Fl(white)581 2640 y(\(color-index)i(\(color)g(purple\)\))
611 b Fg(!)87 b Fl(2)830 3005 y Fp(Finite)52 b(t)-5 b(yp)5
b(es)52 b(are)f(en)-5 b(umerations)53 b(that)e(allo)-5
b(w)52 b(the)g(user)g(to)f(add)h(additional)h(\014elds)f(in)581
3205 y(the)j(t)-5 b(yp)5 b(e.)73 b(The)56 b(syn)-5 b(tax)55
b(for)g(de\014ning)h(a)g(\014nite)f(t)-5 b(yp)5 b(e)55
b(is:)581 3537 y Fl(\(define-finite-type)91 b Fo(tag)102
b(typ)-8 b(e-name)755 3736 y Fl(\()p Fo(\014eld-tag)104
b Fl(...\))755 3935 y Fo(pr)-8 b(e)g(dic)g(ate-name)755
4134 y(ve)g(ctor-of-instanc)g(es-name)755 4334 y(name-ac)g(c)g(essor)
755 4533 y(index-ac)g(c)g(essor)755 4732 y Fl(\()p Fo(\014eld-tag)104
b(ac)-8 b(c)g(essor-name)101 b Fl([)p Fo(mo)-8 b(di\014er-name)12
b Fl(]\))755 4932 y(...)755 5131 y(\(\()p Fo(instanc)-8
b(e-name)102 b(\014eld-value)g Fl(...\))843 5330 y(...\)\))581
5662 y Fp(The)65 b(additional)g(\014elds)h(are)e(sp)5
b(eci\014ed)65 b(exactly)e(as)i(with)g Fl(define-record-type)p
Fp(.)105 b(The)581 5861 y(\014eld)60 b(argumen)-5 b(ts)60
b(to)e(the)h(constructor)g(are)g(listed)g(after)f(the)h
Fo(typ)-8 b(e-name)12 b Fp(;)62 b(these)d(do)g(not)581
6061 y(include)78 b(the)f(name)h(and)f(index)h(\014elds.)140
b(The)78 b(form)f(ends)h(with)f(the)g(names)h(and)g(the)581
6260 y(initial)42 b(\014eld)g(v)-9 b(alues)41 b(for)g(the)g(instances)h
(of)f(the)g(t)-5 b(yp)5 b(e.)69 b(The)41 b(instances)h(are)f
(constructed)g(b)-5 b(y)581 6459 y(applying)44 b(the)e(\(unnamed\))h
(constructor)g(to)f(these)h(initial)g(\014eld)h(v)-9
b(alues.)69 b(The)43 b(name)h(m)-5 b(ust)581 6658 y(b)5
b(e)52 b(\014rst)g(and)g(the)g(remaining)h(v)-9 b(alues)52
b(m)-5 b(ust)53 b(matc)-5 b(h)52 b(the)g Fo(\014eld-tag)15
b Fp(s)53 b(in)g(the)e(constructor's)581 6858 y(argumen)-5
b(t)56 b(list.)581 7223 y Fl(\(define-finite-type)91
b(color)d(:color)755 7422 y(\(red)g(green)g(blue\))755
7621 y(color?)755 7821 y(colors)755 8020 y(color-name)755
8219 y(color-index)755 8418 y(\(red)263 b(color-red\))755
8618 y(\(green)89 b(color-green\))755 8817 y(\(blue)176
b(color-blue\))755 9016 y(\(\(black)350 b(0)262 b(0)g(0\))843
9215 y(\(white)175 b(255)88 b(255)f(255\))843 9415 y(\(purple)h(160)175
b(32)87 b(240\))843 9614 y(\(maroon)h(176)175 b(48)g(96\)\)\))581
10012 y(\(color-name)89 b(\(color)f(black\)\))786 b Fg(!)87
b Fl(black)3362 10511 y Fp(39)p eop end
%%Page: 40 48
TeXDict begin 40 47 bop 1478 1046 a Fl(\(color-name)89
b(\(vector-ref)g(colors)f(1\)\))g Fg(!)f Fl(white)1478
1245 y(\(color-index)i(\(color)f(purple\)\))612 b Fg(!)87
b Fl(2)1478 1445 y(\(color-red)i(\(color)f(maroon\)\))786
b Fg(!)87 b Fl(176)1478 2028 y Fi(5.11)270 b(Sets)90
b(o)-7 b(v)g(er)88 b(\014nite)i(t)-7 b(yp)7 b(es)1478
2404 y Fp(The)71 b(structure)g Fl(enum-sets)i Fp(has)f(a)f(macro)g(for)
g(de\014ning)h(t)-5 b(yp)5 b(es)71 b(for)g(sets)h(of)f(elemen)-5
b(ts)1478 2603 y(of)87 b(\014nite)g(t)-5 b(yp)5 b(es.)170
b(These)88 b(w)-5 b(ork)87 b(naturally)g(with)h(the)f(\014nite)g(t)-5
b(yp)5 b(es)87 b(de\014ned)h(b)-5 b(y)88 b(the)1478 2803
y Fl(finite-types)78 b Fp(structure,)i(but)c(are)f(not)h(tied)f(to)h
(them.)135 b(The)75 b(syn)-5 b(tax)76 b(for)f(de\014ning)1478
3002 y(suc)-5 b(h)56 b(a)g(t)-5 b(yp)5 b(e)54 b(is:)1478
3400 y Fl(\(define-enum-set-type)91 b Fo(id)104 b(typ)-8
b(e-name)100 b(pr)-8 b(e)g(dic)g(ate)99 b(c)-8 b(onstructor)1739
3599 y(element-syntax)110 b(element-pr)-8 b(e)g(dic)g(ate)101
b(al)8 b(l-elements)104 b(element-index-r)-8 b(ef)38
b Fl(\))1478 3990 y Fp(This)79 b(de\014nes)h Fo(id)96
b Fp(to)79 b(b)5 b(e)78 b(syn)-5 b(tax)79 b(for)g(constructing)g(sets,)
85 b Fo(typ)-8 b(e-name)92 b Fp(to)78 b(b)5 b(e)79 b(a)g(v)-9
b(alue)1478 4190 y(represen)k(ting)47 b(the)f(t)-5 b(yp)5
b(e,)48 b Fo(pr)-8 b(e)g(dic)g(ate)58 b Fp(to)47 b(b)5
b(e)46 b(a)g(predicate)h(for)f(those)h(sets,)i(and)e
Fo(c)-8 b(onstructor)1478 4389 y Fp(a)55 b(pro)5 b(cedure)55
b(for)g(constructing)h(one)f(from)h(a)f(list.)1727 4595
y Fo(Element-syntax)78 b Fp(m)-5 b(ust)57 b(b)5 b(e)57
b(the)f(name)h(of)f(a)h(macro)f(for)h(constructing)f(set)h(elemen)-5
b(ts)1478 4794 y(from)46 b(names)h(\(akin)f(to)g(the)g
Fo(tag)61 b Fp(argumen)-5 b(t)47 b(to)f Fl(define-enumerated-type)p
Fp(\).)74 b Fo(Element-)1478 4993 y(pr)-8 b(e)g(dic)g(ate)69
b Fp(m)-5 b(ust)58 b(b)5 b(e)57 b(a)h(predicate)e(for)h(the)g(elemen)-5
b(t)58 b(t)-5 b(yp)5 b(e,)57 b Fo(al)8 b(l-elements)74
b Fp(a)57 b(v)-5 b(ector)57 b(of)g(all)1478 5192 y(v)-9
b(alues)59 b(of)g(the)g(elemen)-5 b(t)60 b(t)-5 b(yp)5
b(e,)59 b(and)h Fo(element-index-r)-8 b(ef)98 b Fp(m)-5
b(ust)60 b(return)g(the)f(index)g(of)g(an)1478 5392 y(elemen)-5
b(t)55 b(within)h(the)f Fo(al)8 b(l-elements)72 b Fp(v)-5
b(ector.)1511 5710 y Fg(\017)83 b Fl(\(enum-set->list)j
Fo(enum-set)16 b Fl(\))84 b Fg(!)f Fo(list)1511 5909
y Fg(\017)g Fl(\(enum-set-member?)103 b Fo(enum-set)84
b(enumer)-8 b(and)17 b Fl(\))84 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1511
6109 y Fg(\017)83 b Fl(\(enum-set=?)102 b Fo(enum-set)84
b(enum-set)16 b Fl(\))85 b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)1511
6308 y Fg(\017)83 b Fl(\(enum-set-union)j Fo(enum-set)e(enum-set)16
b Fl(\))85 b Fg(!)e Fo(enum-set)1511 6507 y Fg(\017)g
Fl(\(enum-set-intersection)k Fo(enum-set)d(enum-set)16
b Fl(\))85 b Fg(!)166 b Fo(enum-set)1511 6706 y Fg(\017)83
b Fl(\(enum-set-negation)j Fo(enum-set)16 b Fl(\))85
b Fg(!)e Fo(enum-set)1478 7025 y Fl(Enum-set->list)65
b Fp(con)-5 b(v)g(erts)64 b(a)f(set)f(in)-5 b(to)64 b(a)f(list)g(of)g
(its)g(elemen)-5 b(ts.)98 b Fl(Enum-set-member?)1478
7224 y Fp(tests)72 b(for)g(mem)-5 b(b)5 b(ership.)125
b Fl(Enum-set=?)h Fp(tests)72 b(t)-5 b(w)g(o)72 b(sets)h(of)e(equal)h
(t)-5 b(yp)5 b(e)72 b(for)f(equalit)-5 b(y)-14 b(.)1478
7423 y(\(If)65 b(its)g(argumen)-5 b(ts)67 b(are)f(not)f(of)h(the)f
(same)h(t)-5 b(yp)5 b(e,)68 b Fl(enum-set=?)106 b Fp(raises)66
b(an)g(exception.\))1478 7623 y Fl(Enum-set-union)39
b Fp(computes)f(the)e(union)i(of)f(t)-5 b(w)g(o)37 b(sets)g(of)g(equal)
f(t)-5 b(yp)5 b(e,)40 b Fl(enum-set-intersection)1478
7822 y Fp(computes)57 b(the)f(in)-5 b(tersection,)57
b(and)h Fl(enum-set-negation)h Fp(computes)e(the)g(complemen)-5
b(t)1478 8021 y(of)55 b(a)g(set.)1727 8227 y(Here)f(is)i(an)g(example.)
74 b(Giv)-5 b(en)56 b(an)f(en)-5 b(umerated)56 b(t)-5
b(yp)5 b(e:)1478 8625 y Fl(\(define-enumerated-type)91
b(color)d(:color)1652 8824 y(color?)1652 9023 y(colors)1652
9223 y(color-name)1652 9422 y(color-index)1652 9621 y(\(red)g(blue)g
(green\)\))1727 10012 y Fp(w)-5 b(e)55 b(can)h(de\014ne)f(sets)h(of)f
(colors:)4259 10511 y(40)p eop end
%%Page: 41 49
TeXDict begin 41 48 bop 581 1046 a Fl(\(define-enum-set-type)91
b(color-set)e(:color-set)2499 1245 y(color-set?)2499
1445 y(make-color-set)755 1644 y(color)g(color?)f(colors)g
(color-index\))581 2012 y(>)f(\(enum-set->list)j(\(color-set)f(red)f
(blue\)\))581 2211 y(\(#{Color)h(red})f(#{Color)g(blue}\))581
2410 y(>)f(\(enum-set->list)j(\(enum-set-negation)h(\(color-set)d(red)g
(blue\)\)\))581 2609 y(\(#{Color)h(green}\))581 2809
y(>)e(\(enum-set-member?)k(\(color-set)d(red)g(blue\))g(\(color)g
(blue\)\))581 3008 y(#t)581 3560 y Fi(5.12)270 b(Hash)91
b(tables)581 3925 y Fp(These)41 b(are)f(generic)g(hash)i(tables,)i(and)
d(are)f(in)h(the)f(structure)g Fl(tables)p Fp(.)70 b(Strictly)39
b(sp)5 b(eaking)581 4124 y(they)64 b(are)g(more)h(maps)h(than)e
(tables,)j(as)e(ev)-5 b(ery)64 b(table)h(has)g(a)f(v)-9
b(alue)64 b(for)h(ev)-5 b(ery)64 b(p)5 b(ossible)581
4323 y(k)-5 b(ey)55 b(\(for)g(that)f(t)-5 b(yp)5 b(e)55
b(of)g(table\).)73 b(All)56 b(but)f(a)g(\014nite)h(n)-5
b(um)g(b)5 b(er)56 b(of)f(those)h(v)-9 b(alues)55 b(are)h
Fl(#f)p Fp(.)614 4624 y Fg(\017)83 b Fl(\(make-table\))i
Fg(!)f Fo(table)614 4823 y Fg(\017)f Fl(\(make-symbol-table\))k
Fg(!)c Fo(symb)-8 b(ol-table)614 5023 y Fg(\017)83 b
Fl(\(make-string-table\))k Fg(!)c Fo(string-table)614
5222 y Fg(\017)g Fl(\(make-integer-table\))k Fg(!)c Fo(inte)-8
b(ger-table)614 5421 y Fg(\017)83 b Fl(\(make-table-maker)j
Fo(c)-8 b(omp)g(ar)g(e-pr)g(o)g(c)82 b(hash-pr)-8 b(o)g(c)9
b Fl(\))82 b Fg(!)h Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)614
5620 y Fg(\017)83 b Fl(\(make-table-immutable!)k Fo(table)12
b Fl(\))581 5921 y Fp(The)74 b(\014rst)g(four)g(functions)h(listed)f
(mak)-5 b(e)74 b(v)-9 b(arious)74 b(kinds)h(of)f(tables.)130
b Fl(Make-table)75 b Fp(re-)581 6120 y(turns)58 b(a)f(table)g(whose)h
(k)-5 b(eys)57 b(ma)-5 b(y)57 b(b)5 b(e)57 b(sym)-5 b(b)5
b(ols,)59 b(in)-5 b(teger,)58 b(c)-5 b(haracters,)58
b(b)5 b(o)g(oleans,)58 b(or)f(the)581 6320 y(empt)-5
b(y)52 b(list)h(\(these)e(are)h(also)h(the)e(v)-9 b(alues)52
b(that)g(ma)-5 b(y)52 b(b)5 b(e)52 b(used)h(in)f Fl(case)h
Fp(expressions\).)74 b(As)581 6519 y(with)53 b Fl(case)p
Fp(,)i(comparison)g(is)f(done)f(using)k Fl(eqv?)p Fp(.)74
b(The)54 b(comparison)g(pro)5 b(cedures)54 b(used)g(in)581
6718 y(sym)-5 b(b)5 b(ol,)57 b(string,)e(and)h(in)-5
b(teger)56 b(tables)f(are)g Fl(eq?)p Fp(,)h Fl(string=?)p
Fp(,)h(and)f Fl(=)p Fp(.)830 6918 y Fl(Make-table-maker)47
b Fp(tak)-5 b(es)44 b(t)-5 b(w)g(o)44 b(pro)5 b(cedures)45
b(as)f(argumen)-5 b(ts)46 b(and)e(returns)h(a)f(n)-5
b(ullary)581 7117 y(table-making)39 b(pro)5 b(cedure.)67
b Fo(Comp)-8 b(ar)g(e-pr)g(o)g(c)46 b Fp(should)39 b(b)5
b(e)38 b(a)f(t)-5 b(w)g(o-argumen)g(t)40 b(equalit)-5
b(y)37 b(pred-)581 7316 y(icate.)134 b Fo(Hash-pr)-8
b(o)g(c)84 b Fp(should)77 b(b)5 b(e)76 b(a)f(one)h(argumen)-5
b(t)76 b(pro)5 b(cedure)75 b(that)g(tak)-5 b(es)76 b(a)f(k)-5
b(ey)75 b(and)581 7516 y(returns)51 b(a)g(non-negativ)-5
b(e)51 b(in)-5 b(teger)51 b(hash)g(v)-9 b(alue.)72 b(If)64
b Fl(\()p Fo(c)-8 b(omp)g(ar)g(e-pr)g(o)g(c)94 b(x)108
b(y)15 b Fl(\))50 b Fp(returns)h(true,)581 7715 y(then)73
b Fl(\(=)87 b(\()p Fo(hash-pr)-8 b(o)g(c)96 b(x)20 b
Fl(\))87 b(\()p Fo(hash-pr)-8 b(o)g(c)96 b(y)15 b Fl(\)\))72
b Fp(m)-5 b(ust)74 b(also)f(return)g(true.)125 b(F)-14
b(or)74 b(example,)581 7914 y Fl(make-integer-table)59
b Fp(could)c(b)5 b(e)55 b(de\014ned)h(as)g Fl(\(make-table-maker)90
b(=)e(abs\))p Fp(.)830 8114 y Fl(Make-table-immutable!)78
b Fp(prohibits)56 b(future)f(mo)5 b(di\014cation)56 b(to)f(its)g
(argumen)-5 b(t.)614 8415 y Fg(\017)83 b Fl(\(table?)102
b Fo(value)12 b Fl(\))84 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614
8614 y Fg(\017)83 b Fl(\(table-ref)i Fo(table)f(key)15
b Fl(\))84 b Fg(!)f Fo(value)h(or)f Fl(#f)614 8813 y
Fg(\017)g Fl(\(table-set!)i Fo(table)g(key)e(value)12
b Fl(\))614 9013 y Fg(\017)83 b Fl(\(table-walk)i Fo(pr)-8
b(o)g(c)g(e)g(dur)g(e)82 b(table)12 b Fl(\))581 9313
y(Table?)130 b Fp(is)74 b(the)f(predicate)h(for)f(tables.)129
b Fl(Table-ref)75 b Fp(and)g Fl(table-set!)130 b Fp(access)74
b(and)581 9513 y(mo)5 b(dify)70 b(the)f(v)-9 b(alue)70
b(of)82 b Fo(key)j Fp(in)70 b Fo(table)12 b Fp(.)119
b Fl(Table-walk)72 b Fp(applies)f Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)12
b Fp(,)72 b(whic)-5 b(h)71 b(m)-5 b(ust)581 9712 y(accept)55
b(t)-5 b(w)g(o)55 b(argumen)-5 b(ts,)57 b(to)e(ev)-5
b(ery)55 b(asso)5 b(ciated)55 b(k)-5 b(ey)55 b(and)h(non-)p
Fl(#f)g Fp(v)-9 b(alue)55 b(in)h Fl(table)p Fp(.)614
10012 y Fg(\017)83 b Fl(\(default-hash-function)k Fo(value)12
b Fl(\))85 b Fg(!)e Fo(inte)-8 b(ger)3362 10511 y Fp(41)p
eop end
%%Page: 42 50
TeXDict begin 42 49 bop 1511 1046 a Fg(\017)83 b Fl(\(string-hash)i
Fo(string)15 b Fl(\))84 b Fg(!)f Fo(inte)-8 b(ger)1478
1359 y Fl(Default-hash-function)75 b Fp(is)d(the)f(hash)i(function)e
(used)i(in)f(the)f(tables)h(returned)f(b)-5 b(y)1478
1558 y Fl(make-table)p Fp(,)57 b(and)f Fl(string-hash)h
Fp(it)e(the)g(one)h(used)g(b)-5 b(y)58 b Fl(make-string-table)p
Fp(.)1478 2131 y Fi(5.13)270 b(P)-7 b(ort)89 b(extensions)1478
2503 y Fp(These)55 b(pro)5 b(cedures)56 b(are)f(in)h(structure)f
Fl(extended-ports)p Fp(.)1511 2815 y Fg(\017)83 b Fl
(\(make-string-input-port)k Fo(string)15 b Fl(\))84 b
Fg(!)f Fo(input-p)-8 b(ort)1511 3015 y Fg(\017)83 b Fl
(\(make-string-output-port\))k Fg(!)c Fo(output-p)-8
b(ort)1511 3214 y Fg(\017)83 b Fl(\(string-output-port-output)88
b Fo(string-output-p)-8 b(ort)16 b Fl(\))84 b Fg(!)f
Fo(string)1478 3526 y Fl(Make-string-input-port)44 b
Fp(returns)c(an)g(input)g(p)5 b(ort)40 b(that)f(that)g(reads)i(c)-5
b(haracters)40 b(from)1478 3726 y(the)79 b(supplied)h(string.)146
b(An)79 b(end-of-\014le)h(ob)9 b(ject)79 b(is)h(returned)f(if)g(the)f
(user)i(reads)g(past)1478 3925 y(the)58 b(end)h(of)f(the)h(string.)84
b Fl(Make-string-output-port)62 b Fp(returns)d(an)g(output)g(p)5
b(ort)58 b(that)1478 4124 y(sa)-5 b(v)g(es)84 b(the)f(c)-5
b(haracters)83 b(written)f(to)h(it.)157 b(These)83 b(are)g(then)g
(returned)g(as)g(a)g(string)h(b)-5 b(y)1478 4323 y Fl
(string-output-port-output)p Fp(.)1478 4711 y Fl(\(read)88
b(\(make-string-input-port)j("\(a)d(b\)"\)\))1826 4910
y Fg(!)g Fl('\(a)f(b\))1478 5309 y(\(let)h(\(\(p)f
(\(make-string-output-port\)\)\))1652 5508 y(\(write)h('\(a)g(b\))g
(p\))1652 5707 y(\(let)g(\(\(s)g(\(string-output-port-output)j(p\)\)\))
1826 5907 y(\(display)e("c")f(p\))1826 6106 y(\(list)h(s)e
(\(string-output-port-output)92 b(p\)\)\)\))1826 6305
y Fg(!)c Fl('\("\(a)g(b\)")f("\(a)h(b\)c"\))1511 6684
y Fg(\017)83 b Fl(\(limit-output)i Fo(output-p)-8 b(ort)83
b(n)h(pr)-8 b(o)g(c)g(e)g(dur)g(e)12 b Fl(\))1478 6997
y Fo(Pr)-8 b(o)g(c)g(e)g(dur)g(e)63 b Fp(is)53 b(called)f(on)h(an)f
(output)h(p)5 b(ort.)72 b(Output)52 b(written)g(to)g(that)f(p)5
b(ort)52 b(is)h(copied)g(to)1478 7196 y Fo(output-p)-8
b(ort)66 b Fp(un)-5 b(til)51 b Fo(n)63 b Fp(c)-5 b(haracters)50
b(ha)-5 b(v)g(e)51 b(b)5 b(een)50 b(written,)g(at)g(whic)-5
b(h)51 b(p)5 b(oin)-5 b(t)50 b Fl(limit-output)1478 7395
y Fp(returns.)106 b(If)65 b Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)77
b Fp(returns)67 b(b)5 b(efore)65 b(writing)h Fo(n)79
b Fp(c)-5 b(haracters,)68 b(then)e Fl(limit-output)1478
7594 y Fp(also)51 b(returns)g(at)f(that)f(time,)j(regardless)f(of)f(ho)
-5 b(w)51 b(man)-5 b(y)51 b(c)-5 b(haracters)51 b(ha)-5
b(v)g(e)51 b(b)5 b(een)50 b(written.)1511 7907 y Fg(\017)83
b Fl(\(make-tracking-input-port)k Fo(input-p)-8 b(ort)16
b Fl(\))84 b Fg(!)f Fo(input-p)-8 b(ort)1511 8106 y Fg(\017)83
b Fl(\(make-tracking-output-port)88 b Fo(output-p)-8
b(ort)16 b Fl(\))83 b Fg(!)g Fo(output-p)-8 b(ort)1511
8305 y Fg(\017)83 b Fl(\(current-row)i Fo(p)-8 b(ort)16
b Fl(\))83 b Fg(!)g Fo(inte)-8 b(ger)84 b(or)f Fl(#f)1511
8504 y Fg(\017)g Fl(\(current-column)j Fo(p)-8 b(ort)16
b Fl(\))82 b Fg(!)h Fo(inte)-8 b(ger)84 b(or)f Fl(#f)1511
8704 y Fg(\017)g Fl(\(fresh-line)i Fo(output-p)-8 b(ort)16
b Fl(\))1478 9016 y(Make-tracking-input-port)41 b Fp(and)c
Fl(make-tracking-output-port)k Fp(return)c(p)5 b(orts)37
b(that)1478 9215 y(k)-5 b(eep)43 b(trac)-5 b(k)44 b(of)f(the)h(curren)
-5 b(t)44 b(ro)-5 b(w)44 b(and)g(column)h(and)f(are)g(otherwise)g(iden)
-5 b(tical)44 b(to)f(their)h(ar-)1478 9415 y(gumen)-5
b(ts.)69 b(Closing)38 b(a)e(trac)-5 b(king)37 b(p)5 b(ort)37
b(do)5 b(es)37 b(not)f(close)i(the)e(underlying)i(p)5
b(ort.)67 b Fl(Current-row)1478 9614 y Fp(and)56 b Fl(current-column)h
Fp(return)e Fo(p)-8 b(ort)16 b Fp('s)55 b(curren)-5 b(t)56
b(read)f(or)g(write)g(lo)5 b(cation.)74 b(They)54 b(return)1478
9813 y Fl(#f)75 b Fp(if)h Fo(p)-8 b(ort)90 b Fp(do)5
b(es)76 b(not)f(k)-5 b(eep)75 b(trac)-5 b(k)75 b(of)g(its)g(lo)5
b(cation.)133 b Fl(Fresh-line)77 b Fp(writes)f(a)f(newline)1478
10012 y(c)-5 b(haracter)55 b(to)g Fo(output-p)-8 b(ort)71
b Fp(if)d Fl(\(current-row)89 b Fo(p)-8 b(ort)16 b Fl(\))55
b Fp(is)h(not)f(0.)4259 10511 y(42)p eop end
%%Page: 43 51
TeXDict begin 43 50 bop 581 1046 a Fl(\(define)89 b(p)e
(\(open-output-port)j("/tmp/temp"\)\))581 1245 y(\(list)e
(\(current-row)h(p\))f(\(current-column)i(p\)\))930 1445
y Fg(!)d Fl('\(0)h(0\))581 1644 y(\(display)h("012")f(p\))581
1843 y(\(list)g(\(current-row)h(p\))f(\(current-column)i(p\)\))930
2042 y Fg(!)d Fl('\(0)h(3\))581 2242 y(\(fresh-line)h(p\))581
2441 y(\(list)f(\(current-row)h(p\))f(\(current-column)i(p\)\))930
2640 y Fg(!)d Fl('\(1)h(0\))581 2839 y(\(fresh-line)h(p\))581
3039 y(\(list)f(\(current-row)h(p\))f(\(current-column)i(p\)\))930
3238 y Fg(!)d Fl('\(1)h(0\))581 3785 y Fi(5.14)270 b(Fluid)90
b(bindings)581 4148 y Fp(These)60 b(pro)5 b(cedures)60
b(implemen)-5 b(t)61 b(dynamic)f(binding)h(and)g(are)e(in)h(structure)g
Fl(fluids)p Fp(.)88 b(A)581 4348 y Fo(\015uid)68 b Fp(is)52
b(a)f(cell)g(whose)h(v)-9 b(alue)51 b(can)g(b)5 b(e)51
b(b)5 b(ound)52 b(dynamically)-14 b(.)73 b(Eac)-5 b(h)52
b(\015uid)g(has)g(a)g(top-lev)-5 b(el)581 4547 y(v)c(alue)37
b(that)g(is)h(used)g(when)f(the)g(\015uid)h(is)g(un)-5
b(b)5 b(ound)39 b(in)f(the)f(curren)-5 b(t)37 b(dynamic)h(en)-5
b(vironmen)g(t.)614 4835 y Fg(\017)83 b Fl(\(make-fluid)i
Fo(value)12 b Fl(\))85 b Fg(!)e Fo(\015uid)614 5035 y
Fg(\017)g Fl(\(fluid)h Fo(\015uid)17 b Fl(\))83 b Fg(!)g
Fo(value)614 5234 y Fg(\017)g Fl(\(let-fluid)i Fo(\015uid)e(value)h
(thunk)18 b Fl(\))84 b Fg(!)f Fo(value\(s\))614 5433
y Fg(\017)g Fl(\(let-fluids)i Fo(\015uid)2145 5458 y
Fj(0)2302 5433 y Fo(value)2670 5458 y Fj(0)2829 5433
y Fo(\015uid)3152 5458 y Fj(1)3309 5433 y Fo(value)3677
5458 y Fj(1)3836 5433 y Fo(.)25 b(.)g(.)g(thunk)18 b
Fl(\))85 b Fg(!)e Fo(value\(s\))581 5721 y Fl(Make-fluid)60
b Fp(returns)e(a)g(new)g(\015uid)h(with)f Fo(value)71
b Fp(as)59 b(its)f(initial)g(top-lev)-5 b(el)58 b(v)-9
b(alue.)82 b Fl(Fluid)581 5921 y Fp(returns)f Fl(fluid)p
Fp('s)g(curren)-5 b(t)80 b(v)-9 b(alue.)147 b Fl(Let-fluid)82
b Fp(calls)e Fl(thunk)p Fp(,)87 b(with)80 b Fo(\015uid)97
b Fp(b)5 b(ound)80 b(to)581 6120 y Fo(value)89 b Fp(un)-5
b(til)77 b Fl(thunk)f Fp(returns.)136 b(Using)76 b(a)f(con)-5
b(tin)g(uation)77 b(to)e(thro)-5 b(w)76 b(out)g(of)f(the)g(call)h(to)
581 6319 y Fl(thunk)54 b Fp(causes)h Fo(\015uid)70 b
Fp(to)53 b(rev)-5 b(ert)52 b(to)h(its)h(original)g(v)-9
b(alue,)53 b(while)h(thro)-5 b(wing)54 b(bac)-5 b(k)53
b(in)h(causes)581 6518 y Fo(\015uid)59 b Fp(to)43 b(b)5
b(e)42 b(reb)5 b(ound)43 b(to)f Fo(value)12 b Fp(.)72
b Fl(Let-fluid)44 b Fp(returns)f(the)f(v)-9 b(alue\(s\))42
b(returned)h(b)-5 b(y)45 b Fo(thunk)18 b Fp(.)581 6718
y Fl(Let-fluids)52 b Fp(is)f(iden)-5 b(tical)51 b(to)f
Fl(let-fluid)i Fp(except)d(that)h(it)g(binds)i(an)e(arbitrary)g(n)-5
b(um)g(b)5 b(er)581 6917 y(of)55 b(\015uids)i(to)e(new)g(v)-9
b(alues.)581 7269 y Fl(\(let*)88 b(\(\(f)g(\(make-fluid)h('a\)\))1191
7468 y(\(v0)f(\(fluid)g(f\)\))1191 7668 y(\(v1)g(\(let-fluid)h(f)e('b)
1714 7867 y(\(lambda)i(\(\))1889 8066 y(\(fluid)f(f\)\)\)\))1191
8265 y(\(v2)g(\(fluid)g(f\)\)\))755 8465 y(\(list)h(v0)e(v1)h(v2\)\))
755 8664 y Fg(!)g Fl('\(a)f(b)h(a\))581 9016 y(\(let)g(\(\(f)g
(\(make-fluid)h('a\)\))1104 9215 y(\(path)f('\(\)\))1104
9415 y(\(c)g(#f\)\))755 9614 y(\(let)g(\(\(add)g(\(lambda)h(\(\))1889
9813 y(\(set!)f(path)g(\(cons)g(\(fluid)g(f\))f(path\)\)\)\)\))930
10012 y(\(add\))3362 10511 y Fp(43)p eop end
%%Page: 44 52
TeXDict begin 44 51 bop 1826 1046 a Fl(\(let-fluid)89
b(f)f('b)2001 1245 y(\(lambda)g(\(\))2175 1445 y
(\(call-with-current-continuation)2350 1644 y(\(lambda)g(\(c0\))2524
1843 y(\(set!)g(c)f(c0\)\)\))2175 2042 y(\(add\)\)\))1826
2242 y(\(add\))1826 2441 y(\(if)h(\(<)g(\(length)g(path\))g(5\))2175
2640 y(\(c\))2175 2839 y(\(reverse)h(path\)\)\)\))1652
3039 y Fg(!)e Fl('\(a)h(b)f(a)h(b)f(a\))1478 3576 y Fi(5.15)270
b(OS)90 b(strings)1478 3940 y Fp(On)54 b(common)g(op)5
b(erating)53 b(systems)h(suc)-5 b(h)55 b(as)f(Unix)f(and)h(Windo)-5
b(ws,)55 b(v)-9 b(arious)54 b(parameters)1478 4139 y(to)k(OS)i
(functionalit)-5 b(y|suc)g(h)60 b(as)g(\014le)f(names,)i(user)e(names,)
i(command-line)g(argumen)-5 b(ts)1478 4339 y(etc.|app)5
b(ear)55 b(as)h(text)e(in)i(most)g(con)-5 b(texts,)55
b(but)h(are)f(really)h(b)-5 b(yte)55 b(sequences:)75
b(On)56 b(Unix,)1478 4538 y(the)62 b(b)-5 b(yte)63 b(sequence)f(ma)-5
b(y)63 b(b)5 b(e)63 b(in)-5 b(terpreted)62 b(as)h(text)f(through)h
(some)g(lo)5 b(cale-determined)1478 4737 y(enco)g(ding.)72
b(On)49 b(Windo)-5 b(ws,)52 b(suc)-5 b(h)50 b(parameters)g(are)f(t)-5
b(ypically)49 b(represen)-5 b(ted)49 b(as)h(sequences)1478
4936 y(of)i(UTF-16)h(co)5 b(de)53 b(units.)74 b(In)53
b(b)5 b(oth)52 b(cases,)i(not)f(ev)-5 b(ery)52 b(suc)-5
b(h)54 b(b)-5 b(yte)53 b(sequence)f(has)i(a)f(string)1478
5136 y(equiv)-9 b(alen)k(t:)77 b(On)57 b(Unix,)g(a)h(b)-5
b(yte)56 b(sequence)h(enco)5 b(ding)57 b(a)h(\014le)f(name)g(using)i
(Latin-1)e(often)1478 5335 y(cannot)70 b(b)5 b(e)69 b(deco)5
b(ded)70 b(using)i(UTF-8.)118 b(On)70 b(Windo)-5 b(ws,)75
b(unpaired)c(UTF-16)g(surrogates)1478 5534 y(are)55 b(admissible)i(in)f
(enco)5 b(dings,)56 b(and)g(no)g(lossless)h(text)d(deco)5
b(ding)55 b(for)h(them)f(exists.)1727 5733 y(F)-14 b(or)53
b(represen)-5 b(ting)53 b(suc)-5 b(h)54 b(string-lik)-5
b(e)53 b(parameters,)h(Sc)-5 b(heme)53 b(48)f(uses)h(an)g(abstraction)
1478 5933 y(called)79 b Fo(OS)k(strings)p Fp(.)146 b(An)80
b(OS)f(string)h(is)g(created)f(from)h(either)f(a)g(string)h(or)g(a)f
(NUL-)1478 6132 y(terminated)67 b(b)-5 b(yte)67 b(sequence)g(stored)g
(in)h(a)f(b)-5 b(yte)67 b(v)-5 b(ector,)70 b(and)e(has)g(an)f(asso)5
b(ciated)68 b(text)1478 6331 y(co)5 b(dec)58 b(\(see)g(section)g
(6.6.1\))h(that)e(is)j(able)e(to)g(con)-5 b(v)g(ert)59
b(from)f(one)h(represen)-5 b(tation)59 b(to)f(the)1478
6530 y(other.)131 b(The)74 b(exact)g(meaning)h(of)f(a)h(NUL-terminated)
e(b)-5 b(yte)75 b(sequence)f(is)h(dep)5 b(enden)-5 b(t)1478
6730 y(on)58 b(this)g(text)e(co)5 b(dec.)80 b(Ho)-5 b(w)g(ev)g(er,)58
b(only)f(co)5 b(decs)58 b(for)f(enco)5 b(dings)58 b(that)f(are)g(a)h
(conserv)-9 b(ativ)k(e)1478 6929 y(extension)68 b(of)g(ASCI)5
b(I)67 b(\(suc)-5 b(h)69 b(as)g(ASCI)5 b(I)67 b(itself,)k(Latin-1,)h
(or)c(UTF-8\))g(should)i(b)5 b(e)68 b(used)1478 7128
y(here,)58 b(to)e(allo)-5 b(w)58 b(a)f(minimal)i(set)e(of)g(p)5
b(ortable)57 b(\014le)h(names.)80 b(\(The)57 b(Windo)-5
b(ws)58 b(p)5 b(ort)57 b(uses)h(a)1478 7327 y(sp)5 b(ecial)38
b(syn)-5 b(thetic)37 b(enco)5 b(ding)38 b(called)g(UTF-8of16)g
(compatible)g(with)f(UTF-8)h(but)g(capable)1478 7527
y(of)66 b(enco)5 b(ding)67 b(ev)-5 b(en)67 b(in)-5 b(v)c(alid)68
b(UTF-16)f(in)-5 b(ternally)-14 b(,)70 b(but)d(uses)h(the)e(UTF-8)h(co)
5 b(dec)66 b(at)h(the)1478 7726 y(Sc)-5 b(heme)56 b(lev)-5
b(el.\))1727 7925 y(Most)71 b(pro)5 b(cedures)71 b(accepting)g(OS)g
(strings)h(also)g(accept)e(strings)i(or)f(b)-5 b(yte)70
b(v)-5 b(ectors,)1478 8124 y(whic)g(h)41 b(are)g(then)g(used)h(to)e
(construct)h(a)g(OS)g(string.)70 b(In)41 b(the)g(headers)g(of)g(the)g
(sp)5 b(eci\014cations)1478 8324 y(of)76 b(these)g(pro)5
b(cedures,)82 b(suc)-5 b(h)78 b(argumen)-5 b(ts)78 b(o)5
b(ccur)75 b(as)i Fo(os-string-thing)17 b Fp(.)137 b(The)76
b(standard)1478 8523 y(Sc)-5 b(heme)73 b(pro)5 b(cedures)72
b(suc)-5 b(h)73 b(as)g Fl(open-input-file)i Fp(that)d(tak)-5
b(e)71 b(\014le)i(names)g(all)f(accept)1478 8722 y Fo(os-string-thing)g
Fp(argumen)-5 b(ts.)75 b(OS)56 b(strings)g(are)f(in)h(the)f
Fl(os-strings)i Fp(structure.)1511 8969 y Fg(\017)83
b Fl(\(string->os-string)j Fo(string)15 b Fl(\))84 b
Fg(!)f Fo(os-string)1511 9168 y Fg(\017)g Fl(\(byte-vector->os-string)k
Fo(byte-ve)-8 b(ctor)18 b Fl(\))85 b Fg(!)e Fo(os-string)1511
9367 y Fg(\017)g Fl(\(x->os-string)i Fo(os-string-thing)15
b Fl(\))85 b Fg(!)e Fo(os-string)1478 9614 y Fp(These)61
b(pro)5 b(cedures)62 b(create)f(an)g(OS)h(string)g(from)g(a)f(string,)j
(a)d(b)-5 b(yte-v)g(ector)61 b(\(whose)g(last)1478 9813
y(v)-9 b(alue)54 b(should)i(b)5 b(e)54 b(0\),)g(and)h(an)f
Fo(os-string-thing)71 b Fp(argumen)-5 b(t,)56 b(resp)5
b(ectiv)-5 b(ely)-14 b(,)54 b(alw)-5 b(a)g(ys)55 b(using)1478
10012 y(the)g(standard)h(OS-string)h(text)d(co)5 b(dec)54
b(\(see)h(b)5 b(elo)-5 b(w\).)4259 10511 y(44)p eop end
%%Page: 45 53
TeXDict begin 45 52 bop 614 1046 a Fg(\017)83 b Fl
(\(os-string->byte-vector)k Fo(os-string)15 b Fl(\))84
b Fg(!)f Fo(byte-ve)-8 b(ctor)614 1245 y Fg(\017)83 b
Fl(\(os-string->string)k Fo(os-string)15 b Fl(\))83 b
Fg(!)g Fo(string)581 1533 y Fp(These)58 b(pro)5 b(cedures)58
b(yield)f(the)g(con)-5 b(ten)g(ts)58 b(of)f(an)h(OS)g(string.)81
b(F)-14 b(or)58 b(an)g(OS)f(string)h(created)581 1732
y(from)c(a)g(string,)h Fl(os-string->string)h Fp(will)f(return)e(a)h
(string)g(with)g(the)g(same)g(con)-5 b(ten)g(ts;)581
1931 y(for)78 b(an)h(OS)g(string)g(created)f(from)h(a)f(b)-5
b(yte)78 b(v)-5 b(ector,)84 b Fl(os-string->byte-vector)e
Fp(will)581 2131 y(return)61 b(a)g(b)-5 b(yte)60 b(v)-5
b(ector)61 b(with)f(the)h(same)h(con)-5 b(ten)g(ts.)91
b(F)-14 b(or)61 b(the)g(other)f(cases,)j(data)e(loss)h(as)581
2330 y(determined)56 b(b)-5 b(y)55 b(the)g(text)f(co)5
b(dec)55 b(is)h(p)5 b(ossible.)614 2617 y Fg(\017)83
b Fl(\(current-os-string-text-codec\))89 b Fg(!)83 b
Fo(text-c)-8 b(o)g(de)g(c)614 2817 y Fg(\017)83 b Fl
(\(call-with-os-string-text-codec)89 b Fo(text-c)-8 b(o)g(de)g(c)83
b(thunk)18 b Fl(\))84 b Fg(!)166 b Fo(value\(s\))581
3104 y Fp(The)65 b Fl(current-os-string-text-codec)k
Fp(returns)c(the)f(curren)-5 b(t)65 b(text)e(co)5 b(dec)64
b(used)h(for)581 3303 y(creating)75 b(new)f(OS)i(strings.)133
b(The)75 b(initial)g(default)g(is)g(determined)g(b)-5
b(y)75 b(the)g(op)5 b(erating)581 3503 y(system.)70 b(\(On)41
b(Unix,)j(this)d(is)h(the)f(text)f(co)5 b(dec)40 b(determined)i(b)-5
b(y)41 b(the)g(lo)5 b(cale.)69 b(On)41 b(Windo)-5 b(ws,)581
3702 y(this)38 b(is)f(UTF-8.\))68 b(The)37 b Fl
(call-with-os-string-text-codec)42 b Fp(pro)5 b(cedure)37
b(dynamically)581 3901 y(binds)57 b(the)e(curren)-5 b(t)55
b(text)f(co)5 b(dec)55 b(to)g Fo(text-c)-8 b(o)g(de)g(c)65
b Fp(during)56 b(the)f(in)-5 b(v)g(o)5 b(cation)56 b(of)f
Fo(thunk)19 b Fp(.)581 4448 y Fi(5.16)270 b(Shell)90
b(commands)581 4811 y Fp(Structure)55 b Fl(c-system-function)j
Fp(pro)-5 b(vides)57 b(access)e(to)g(the)g(C)h Fl(system\(\))g
Fp(function.)614 5099 y Fg(\017)83 b Fl(\(have-system?\))104
b Fg(!)83 b Fo(b)-8 b(o)g(ole)g(an)614 5298 y Fg(\017)83
b Fl(\(system)i Fo(os-string-thing)15 b Fl(\))84 b Fg(!)g
Fo(inte)-8 b(ger)581 5586 y Fl(Have-system?)73 b Fp(returns)48
b(true)f(if)g(the)f(underlying)i(C)f(implemen)-5 b(tation)49
b(has)e(a)h(command)581 5785 y(pro)5 b(cessor.)100 b
Fl(\(System)88 b Fo(string)15 b Fl(\))64 b Fp(passes)h
Fo(string)79 b Fp(to)64 b(the)f(C)h Fl(system\(\))h Fp(function)e(and)h
(re-)581 5984 y(turns)56 b(the)f(result.)581 6335 y Fl(\(begin)755
6535 y(\(system)89 b("echo)f(foo)g(>)f(test-file"\))755
6734 y(\(call-with-input-file)k("test-file")e(read\)\))581
6933 y Fg(!)e Fl('foo)581 7480 y Fi(5.17)270 b(So)7 b(c)-7
b(k)g(ets)581 7843 y Fp(Structure)52 b Fl(sockets)h Fp(pro)-5
b(vides)53 b(access)f(to)g(TCP/IP)g(so)5 b(c)-5 b(k)g(ets)52
b(for)g(in)-5 b(terpro)5 b(cess)52 b(and)h(net-)581 8043
y(w)-5 b(ork)56 b(comm)-5 b(unication.)614 8330 y Fg(\017)83
b Fl(\(open-socket\))j Fg(!)d Fo(so)-8 b(cket)614 8529
y Fg(\017)83 b Fl(\(open-socket)i Fo(p)-8 b(ort-numb)g(er)18
b Fl(\))84 b Fg(!)f Fo(so)-8 b(cket)614 8729 y Fg(\017)83
b Fl(\(socket-port-number)k Fo(so)-8 b(cket)16 b Fl(\))83
b Fg(!)g Fo(inte)-8 b(ger)614 8928 y Fg(\017)83 b Fl(\(close-socket)j
Fo(so)-8 b(cket)16 b Fl(\))614 9127 y Fg(\017)83 b Fl(\(socket-accept)j
Fo(so)-8 b(cket)16 b Fl(\))83 b Fg(!)g Fo(input-p)-8
b(ort)84 b(output-p)-8 b(ort)614 9326 y Fg(\017)83 b
Fl(\(get-host-name\))j Fg(!)d Fo(string)581 9614 y Fl(Open-socket)70
b Fp(creates)d(a)h(new)g(so)5 b(c)-5 b(k)g(et.)112 b(If)67
b(no)i Fo(p)-8 b(ort-numb)g(er)86 b Fp(is)68 b(supplied)i(the)d(system)
581 9813 y(pic)-5 b(ks)77 b(one)e(at)h(random.)135 b
Fl(Socket-port-number)79 b Fp(returns)d(a)g(so)5 b(c)-5
b(k)g(et's)76 b(p)5 b(ort)75 b(n)-5 b(um)g(b)5 b(er.)581
10012 y Fl(Close-socket)39 b Fp(closes)f(a)f(so)5 b(c)-5
b(k)g(et,)40 b(prev)-5 b(en)g(ting)37 b(an)-5 b(y)38
b(further)e(connections.)68 b Fl(Socket-accept)3362 10511
y Fp(45)p eop end
%%Page: 46 54
TeXDict begin 46 53 bop 1478 1046 a Fp(accepts)65 b(a)h(single)h
(connection)f(on)g Fo(so)-8 b(cket)16 b Fp(,)69 b(returning)d(an)g
(input)g(p)5 b(ort)66 b(and)g(an)g(output)1478 1245 y(p)5
b(ort)58 b(for)g(comm)-5 b(unicating)60 b(with)f(the)f(clien)-5
b(t.)84 b(If)59 b(no)g(clien)-5 b(t)58 b(is)i(w)-5 b(aiting)61
b Fl(socket-accept)1478 1445 y Fp(blo)5 b(c)-5 b(ks)53
b(un)-5 b(til)53 b(one)g(app)5 b(ears.)74 b Fl(Get-host-name)55
b Fp(returns)e(the)g(net)-5 b(w)g(ork)52 b(name)i(of)e(the)h(ma-)1478
1644 y(c)-5 b(hine.)1511 1936 y Fg(\017)83 b Fl(\(socket-client)i
Fo(host-name)f(p)-8 b(ort-numb)g(er)18 b Fl(\))84 b Fg(!)f
Fo(input-p)-8 b(ort)83 b(output-p)-8 b(ort)1478 2228
y Fl(Socket-client)67 b Fp(connects)e(to)f(the)g(serv)-5
b(er)65 b(at)g Fo(p)-8 b(ort-numb)g(er)82 b Fp(on)66
b(the)e(mac)-5 b(hine)66 b(named)1478 2427 y Fo(host-name)12
b Fp(.)75 b Fl(Socket-client)57 b Fp(blo)5 b(c)-5 b(ks)56
b(un)-5 b(til)56 b(the)f(serv)-5 b(er)56 b(accepts)f(the)g(connection.)
1727 2626 y(The)44 b(follo)-5 b(wing)44 b(simple)i(example)d(sho)-5
b(ws)46 b(a)e(serv)-5 b(er)44 b(and)g(clien)-5 b(t)44
b(for)g(a)g(cen)-5 b(tralized)44 b(UID)1478 2826 y(service.)1478
3151 y Fl(\(define)88 b(\(id-server\))1652 3350 y(\(let)g(\(\(socket)h
(\(open-socket\)\)\))1826 3549 y(\(display)g("Waiting)g(on)e(port)h
("\))1826 3749 y(\(display)h(\(socket-port-number)h(socket\)\))1826
3948 y(\(newline\))1826 4147 y(\(let)e(loop)g(\(\(next-id)h(0\)\))2001
4346 y(\(call-with-values)2175 4546 y(\(lambda)g(\(\))2350
4745 y(\(socket-accept)g(socket\)\))2175 4944 y(\(lambda)g(\(in)e
(out\))2350 5143 y(\(display)h(next-id)g(out\))2350 5343
y(\(close-input-port)i(in\))2350 5542 y(\(close-output-port)g(out\))
2350 5741 y(\(loop)e(\(+)f(next-id)h(1\)\)\)\)\)\)\))1478
6140 y(\(define)g(\(get-id)h(machine)f(port-number\))1652
6339 y(\(call-with-values)1826 6538 y(\(lambda)h(\(\))2001
6737 y(\(socket-client)g(machine)g(port-number\)\))1826
6937 y(\(lambda)g(\(in)f(out\))2001 7136 y(\(let)g(\(\(id)g(\(read)g
(in\)\)\))2175 7335 y(\(close-input-port)i(in\))2175
7534 y(\(close-output-port)g(out\))2175 7734 y(id\)\)\)\))1478
8281 y Fi(5.18)270 b(Macros)90 b(for)g(writing)g(lo)7
b(ops)1478 8645 y Fl(Iterate)65 b Fp(and)g Fl(reduce)g
Fp(are)f(extensions)g(of)g(named-)p Fl(let)h Fp(for)f(writing)g(lo)5
b(ops)65 b(that)e(w)-5 b(alk)1478 8844 y(do)g(wn)57 b(one)g(or)g(more)f
(sequences,)i(suc)-5 b(h)58 b(as)f(the)f(elemen)-5 b(ts)57
b(of)g(a)f(list)h(or)g(v)-5 b(ector,)56 b(the)g(c)-5
b(har-)1478 9043 y(acters)64 b(read)h(from)g(a)g(p)5
b(ort,)67 b(or)e(an)g(arithmetic)f(series.)104 b(Additional)65
b(sequences)g(can)g(b)5 b(e)1478 9243 y(de\014ned)56
b(b)-5 b(y)55 b(the)g(user.)75 b Fl(Iterate)56 b Fp(and)g
Fl(reduce)h Fp(are)e(in)h(structure)f Fl(reduce)p Fp(.)1478
9706 y Fc(5.18.1)225 b Fb(Iterate)1478 10012 y Fp(The)55
b(syn)-5 b(tax)55 b(of)68 b Fl(iterate)57 b Fp(is:)4259
10511 y(46)p eop end
%%Page: 47 55
TeXDict begin 47 54 bop 755 1046 a Fl(\(iterate)89 b
Fo(lo)-8 b(op-name)1540 1245 y Fl(\(\()p Fo(se)g(quenc)g(e-typ)g(e)101
b(element-variable)i(se)-8 b(quenc)g(e-data)102 b Fl(...\))1627
1445 y(...\))1540 1644 y(\(\()p Fo(state-variable)g(initial-value)12
b Fl(\))1627 1843 y(...\))930 2042 y Fo(b)-8 b(o)g(dy-expr)g(ession)930
2242 y Fl([)p Fo(\014nal-expr)g(ession)13 b Fl(]\))830
2566 y(Iterate)48 b Fp(steps)f(the)g Fo(element-variable)12
b Fp(s)51 b(in)c(parallel)g(through)g(the)g(sequences,)h(while)581
2765 y(eac)-5 b(h)48 b Fo(state-variable)63 b Fp(has)48
b(the)g(corresp)5 b(onding)51 b Fo(initial-value)62 b
Fp(for)48 b(the)g(\014rst)g(iteration)f(and)581 2964
y(ha)-5 b(v)g(e)63 b(later)e(v)-9 b(alues)62 b(supplied)i(b)-5
b(y)65 b Fo(b)-8 b(o)g(dy-expr)g(ession)13 b Fp(.)92
b(If)62 b(an)-5 b(y)62 b(sequence)g(has)h(reac)-5 b(hed)62
b(its)581 3164 y(limit)78 b(the)e(v)-9 b(alue)77 b(of)g(the)g
Fl(iterate)h Fp(expression)g(is)g(the)e(v)-9 b(alue)77
b(of)90 b Fo(\014nal-expr)-8 b(ession)13 b Fp(,)84 b(if)581
3363 y(presen)-5 b(t,)50 b(or)d(the)g(curren)-5 b(t)47
b(v)-9 b(alues)47 b(of)g(the)g Fo(state-variable)12 b
Fp(s,)52 b(returned)c(as)f(m)-5 b(ultiple)48 b(v)-9 b(alues.)581
3562 y(If)77 b(no)g(sequence)g(has)g(reac)-5 b(hed)77
b(its)g(limit,)83 b Fo(b)-8 b(o)g(dy-expr)g(ession)89
b Fp(is)78 b(ev)-9 b(aluated)76 b(and)h(either)581 3761
y(calls)64 b Fo(lo)-8 b(op-name)76 b Fp(with)62 b(new)h(v)-9
b(alues)63 b(for)g(the)g Fo(state-variable)12 b Fp(s,)68
b(or)63 b(returns)g(some)h(other)581 3961 y(v)-9 b(alue\(s\).)830
4160 y(The)60 b Fo(lo)-8 b(op-name)73 b Fp(and)60 b(the)g
Fo(state-variable)12 b Fp(s)63 b(and)d Fo(initial-value)12
b Fp(s)64 b(b)5 b(eha)-5 b(v)g(e)60 b(exactly)e(as)581
4359 y(in)e(named-)p Fl(let)p Fp(.)75 b(The)56 b(named-)p
Fl(let)h Fp(expression)755 4683 y Fl(\(let)88 b(loop-name)h
(\(\(state-variable)h(initial-value\))g(...\))930 4883
y(body)e(...\))581 5207 y Fp(is)55 b(equiv)-9 b(alen)k(t)53
b(to)h(an)g Fl(iterate)h Fp(expression)g(with)f(no)h(sequences)f(\(and)
g(with)g(an)g(explicit)581 5406 y Fl(let)45 b Fp(wrapp)5
b(ed)45 b(around)g(the)f(b)5 b(o)g(dy)44 b(expressions)i(to)e(tak)-5
b(e)43 b(care)i(of)f(an)-5 b(y)44 b(in)-5 b(ternal)45
b Fl(define)p Fp(s\):)755 5731 y Fl(\(iterate)89 b(loop-name)1540
5930 y(\(\))1540 6129 y(\(\(state-variable)h(initial-value\))g(...\))
930 6328 y(\(let)e(\(\))f(body)h(...\)\))830 6653 y Fp(The)65
b Fo(se)-8 b(quenc)g(e-typ)g(e)12 b Fp(s)67 b(are)d(k)-5
b(eyw)g(ords)66 b(\(they)d(are)i(actually)f(macros)h(of)g(a)f
(particular)581 6852 y(form;)87 b(it)76 b(is)h(easy)f(to)g(add)h
(additional)g(t)-5 b(yp)5 b(es)75 b(of)h(sequences\).)137
b(Examples)77 b(are)f Fl(list*)581 7051 y Fp(whic)-5
b(h)60 b(w)-5 b(alks)60 b(do)-5 b(wn)60 b(the)f(elemen)-5
b(ts)59 b(of)g(a)g(list)h(and)g Fl(vector*)g Fp(whic)-5
b(h)60 b(do)5 b(es)59 b(the)g(same)h(for)581 7250 y(v)-5
b(ectors.)73 b(F)-14 b(or)55 b(eac)-5 b(h)55 b(iteration,)f(eac)-5
b(h)55 b Fo(element-variable)70 b Fp(is)55 b(b)5 b(ound)55
b(to)f(the)g(next)g(elemen)-5 b(t)581 7450 y(of)55 b(the)g(sequence.)74
b(The)55 b Fo(se)-8 b(quenc)g(e-data)70 b Fp(giv)-5 b(es)56
b(the)f(actual)g(list)g(or)h(v)-5 b(ector)54 b(or)i(whatev)-5
b(er.)830 7649 y(If)69 b(there)f(is)h(a)f Fo(\014nal-expr)-8
b(ession)13 b Fp(,)74 b(it)68 b(is)h(ev)-9 b(aluated)68
b(when)h(the)f(end)h(of)f(one)h(or)f(more)581 7848 y(sequences)61
b(is)g(reac)-5 b(hed.)90 b(If)61 b(the)f Fo(b)-8 b(o)g(dy-expr)g
(ession)73 b Fp(do)5 b(es)60 b(not)h(call)g Fo(lo)-8
b(op-name)73 b Fp(the)60 b Fo(\014nal-)581 8047 y(expr)-8
b(ession)79 b Fp(is)66 b(not)g(ev)-9 b(aluated.)105 b(The)66
b Fo(state-variable)12 b Fp(s)69 b(are)c(visible)i(in)f
Fo(\014nal-expr)-8 b(ession)581 8247 y Fp(but)56 b(the)f
Fo(se)-8 b(quenc)g(e-variable)12 b Fp(s)59 b(are)c(not.)830
8446 y(The)j Fo(b)-8 b(o)g(dy-expr)g(ession)70 b Fp(and)58
b(the)g Fo(\014nal-expr)-8 b(ession)72 b Fp(are)57 b(in)i(tail-p)5
b(osition)58 b(within)g(the)581 8645 y Fl(iterate)p Fp(.)105
b(Unlik)-5 b(e)65 b(named-)p Fl(let)p Fp(,)k(the)c(b)5
b(eha)-5 b(vior)65 b(of)g(a)g(non-tail-recursiv)-5 b(e)67
b(call)e(to)g Fo(lo)-8 b(op-)581 8844 y(name)58 b Fp(is)46
b(unsp)5 b(eci\014ed)46 b(\(b)5 b(ecause)44 b(iterating)h(do)-5
b(wn)46 b(a)f(sequence)f(ma)-5 b(y)46 b(in)-5 b(v)g(olv)g(e)46
b(side)f(e\013ects,)581 9044 y(suc)-5 b(h)57 b(as)f(reading)f(c)-5
b(haracters)56 b(from)f(a)h(p)5 b(ort\).)581 9507 y Fc(5.18.2)225
b Fb(Reduce)581 9813 y Fp(If)38 b(an)g Fl(iterate)g Fp(expression)h(is)
f(not)g(mean)-5 b(t)38 b(to)f(terminate)h(b)5 b(efore)37
b(a)g(sequence)h(has)g(reac)-5 b(hed)581 10012 y(its)62
b(end,)h Fo(b)-8 b(o)g(dy-expr)g(ession)74 b Fp(will)62
b(alw)-5 b(a)g(ys)62 b(end)g(with)f(a)h(tail)f(call)g(to)h
Fo(lo)-8 b(op-name)12 b Fp(.)93 b Fl(Reduce)3362 10511
y Fp(47)p eop end
%%Page: 48 56
TeXDict begin 48 55 bop 1478 1046 a Fp(is)57 b(a)g(macro)g(that)g(mak)
-5 b(es)57 b(this)h(common)g(case)f(explicit.)78 b(The)57
b(syn)-5 b(tax)57 b(of)69 b Fl(reduce)58 b Fp(is)g(the)1478
1245 y(same)39 b(as)f(that)g(of)51 b Fl(iterate)p Fp(,)43
b(except)37 b(that)h(there)f(is)i(no)g Fo(lo)-8 b(op-name)12
b Fp(.)69 b(The)38 b Fo(b)-8 b(o)g(dy-expr)g(ession)1478
1445 y Fp(returns)54 b(new)f(v)-9 b(alues)54 b(of)f(the)g
Fo(state-variable)12 b Fp(s)57 b(instead)d(of)f(passing)j(them)d(to)g
Fo(lo)-8 b(op-name)12 b Fp(.)1478 1644 y(Th)-5 b(us)63
b Fo(b)-8 b(o)g(dy-expr)g(ession)73 b Fp(m)-5 b(ust)63
b(return)e(as)h(man)-5 b(y)62 b(v)-9 b(alues)62 b(as)g(there)f(are)g
(state)g(v)-9 b(ariables.)1478 1843 y(By)44 b(sp)5 b(ecial)44
b(disp)5 b(ensation,)48 b(if)d(there)f(are)g(no)h(state)f(v)-9
b(ariables)45 b(then)f Fo(b)-8 b(o)g(dy-expr)g(ession)57
b Fp(ma)-5 b(y)1478 2042 y(return)55 b(an)-5 b(y)56 b(n)-5
b(um)g(b)5 b(er)56 b(of)f(v)-9 b(alues,)56 b(all)g(of)f(whic)-5
b(h)56 b(are)f(ignored.)1727 2242 y(The)g(syn)-5 b(tax)56
b(of)68 b Fl(reduce)56 b Fp(is:)1652 2578 y Fl(\(reduce)89
b(\(\()p Fo(se)-8 b(quenc)g(e-typ)g(e)101 b(element-variable)i(se)-8
b(quenc)g(e-data)101 b Fl(...\))2524 2777 y(...\))2437
2976 y(\(\()p Fo(state-variable)h(initial-value)12 b
Fl(\))2524 3176 y(...\))1826 3375 y Fo(b)-8 b(o)g(dy-expr)g(ession)1826
3574 y Fl([)p Fo(\014nal-expr)g(ession)13 b Fl(]\))1727
3909 y Fp(The)57 b(v)-9 b(alue\(s\))57 b(returned)h(b)-5
b(y)57 b(an)h(instance)g(of)70 b Fl(reduce)59 b Fp(is)f(the)f(v)-9
b(alue\(s\))57 b(returned)g(b)-5 b(y)1478 4108 y(the)75
b Fo(\014nal-expr)-8 b(ession)13 b Fp(,)82 b(if)75 b(presen)-5
b(t,)82 b(or)75 b(the)g(curren)-5 b(t)76 b(v)-9 b(alue\(s\))75
b(of)g(the)g(state)g(v)-9 b(ariables)1478 4307 y(when)55
b(the)g(end)h(of)f(one)g(or)h(more)f(sequences)h(is)g(reac)-5
b(hed.)1727 4507 y(A)58 b Fl(reduce)i Fp(expression)g(can)f(b)5
b(e)59 b(rewritten)f(as)i(an)f(equiv)-9 b(alen)k(t)58
b Fl(iterate)i Fp(expression)1478 4706 y(b)-5 b(y)53
b(adding)h(a)f Fo(lo)-8 b(op-var)71 b Fp(and)53 b(a)g(wrapp)5
b(er)53 b(for)g(the)f Fo(b)-8 b(o)g(dy-expr)g(ession)65
b Fp(that)52 b(calls)i(the)e Fo(lo)-8 b(op-)1478 4906
y(var)18 b Fp(.)1478 5241 y Fl(\(iterate)88 b(loop)2262
5440 y(\(\()p Fo(se)-8 b(quenc)g(e-typ)g(e)102 b(element-variable)h(se)
-8 b(quenc)g(e-data)101 b Fl(...\))2350 5640 y(...\))2262
5839 y(\(\()p Fo(state-variable)h(initial-value)12 b
Fl(\))2350 6038 y(...\))1652 6237 y(\(call-with-values)90
b(\(lambda)f(\(\))3396 6437 y Fo(b)-8 b(o)g(dy-expr)g(ession)13
b Fl(\))3221 6636 y(loop\))1652 6835 y([)p Fo(\014nal-expr)-8
b(ession)13 b Fl(]\))1478 7304 y Fc(5.18.3)225 b(Sequence)74
b(t)-6 b(yp)6 b(es)1478 7612 y Fp(The)55 b(prede\014ned)h(sequence)f(t)
-5 b(yp)5 b(es)55 b(are:)1511 7947 y Fg(\017)83 b Fl(\(list*)h
Fo(elt-var)103 b(list)16 b Fl(\))3562 b Fp(syn)-5 b(tax)1511
8146 y Fg(\017)83 b Fl(\(vector*)h Fo(elt-var)103 b(ve)-8
b(ctor)18 b Fl(\))3172 b Fp(syn)-5 b(tax)1511 8345 y
Fg(\017)83 b Fl(\(string*)h Fo(elt-var)103 b(string)15
b Fl(\))3192 b Fp(syn)-5 b(tax)1511 8545 y Fg(\017)83
b Fl(\(count*)h Fo(elt-var)103 b(start)c Fl([)p Fo(end)i
Fl([)p Fo(step)10 b Fl(]]\))2278 b Fp(syn)-5 b(tax)1511
8744 y Fg(\017)83 b Fl(\(input*)h Fo(elt-var)103 b(input-p)-8
b(ort)99 b(r)-8 b(e)g(ad-pr)g(o)g(c)g(e)g(dur)g(e)12
b Fl(\))1846 b Fp(syn)-5 b(tax)1511 8943 y Fg(\017)83
b Fl(\(stream*)h Fo(elt-var)103 b(pr)-8 b(o)g(c)g(e)g(dur)g(e)94
b(initial-data)13 b Fl(\))2044 b Fp(syn)-5 b(tax)1727
9278 y(F)-14 b(or)49 b(lists,)h(v)-5 b(ectors,)50 b(and)f(strings)g
(the)f(elemen)-5 b(t)48 b(v)-9 b(ariable)49 b(is)f(b)5
b(ound)49 b(to)f(the)g(successiv)-5 b(e)1478 9477 y(elemen)g(ts)56
b(of)f(the)g(list)g(or)h(v)-5 b(ector,)55 b(or)g(the)g(c)-5
b(haracters)56 b(in)f(the)g(string.)1727 9677 y(F)-14
b(or)56 b Fl(count*)g Fp(the)f(elemen)-5 b(t)56 b(v)-9
b(ariable)55 b(is)h(b)5 b(ound)56 b(to)f(the)g(elemen)-5
b(ts)56 b(of)f(the)g(sequence)1565 10012 y Fo(start)16
b Fl(,)87 b Fo(start)103 b Fl(+)88 b Fo(step)10 b Fl(,)88
b Fo(start)103 b Fl(+)87 b(2)p Fo(step)10 b Fl(,)88 b(...,)g
Fo(end)4259 10511 y Fp(48)p eop end
%%Page: 49 57
TeXDict begin 49 56 bop 581 1046 a Fp(inclusiv)-5 b(e)71
b(of)82 b Fo(start)j Fp(and)70 b(exclusiv)-5 b(e)70 b(of)82
b Fo(end)17 b Fp(.)117 b(The)69 b(default)h Fo(step)80
b Fp(is)70 b(1.)116 b(The)70 b(sequence)581 1245 y(do)5
b(es)61 b(not)g(terminate)f(if)h(no)g Fo(end)79 b Fp(is)61
b(giv)-5 b(en)61 b(or)g(if)g(there)f(is)h(no)h Fd(N)73
b(>)56 b Fp(0)61 b(suc)-5 b(h)62 b(that)e Fo(end)79 b
Fp(=)581 1445 y Fo(start)i Fp(+)66 b(N)p Fo(step)76 b
Fp(\()p Fl(=)65 b Fp(is)h(used)g(to)f(test)g(for)h(termination\).)104
b(F)-14 b(or)66 b(example,)i Fl(\(count*)88 b(i)f(0)581
1644 y(-1\))65 b Fp(do)5 b(esn't)65 b(terminate)f(b)5
b(ecause)64 b(it)g(b)5 b(egins)65 b(past)g(the)f Fo(end)82
b Fp(v)-9 b(alue)64 b(and)h Fl(\(count*)88 b(i)f(0)581
1843 y(1)g(2\))56 b Fp(do)5 b(esn't)56 b(terminate)f(b)5
b(ecause)55 b(it)g(skips)h(o)-5 b(v)g(er)56 b(the)f Fo(end)73
b Fp(v)-9 b(alue.)830 2053 y(F)-14 b(or)66 b Fl(input*)g
Fp(the)e(elemen)-5 b(ts)66 b(are)f(the)f(results)i(of)f(successiv)-5
b(e)66 b(applications)g(of)77 b Fo(r)-8 b(e)g(ad-)581
2252 y(pr)g(o)g(c)g(e)g(dur)g(e)89 b Fp(to)77 b Fo(input-p)-8
b(ort)16 b Fp(.)140 b(The)78 b(sequence)f(ends)i(when)e
Fo(r)-8 b(e)g(ad-pr)g(o)g(c)g(e)g(dur)g(e)88 b Fp(returns)78
b(an)581 2451 y(end-of-\014le)56 b(ob)9 b(ject.)830 2660
y(F)-14 b(or)47 b(a)g(stream,)h(the)f Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)57
b Fp(tak)-5 b(es)46 b(the)g(curren)-5 b(t)47 b(data)f(v)-9
b(alue)46 b(as)h(an)g(argumen)-5 b(t)47 b(and)581 2860
y(returns)54 b(t)-5 b(w)g(o)54 b(v)-9 b(alues,)55 b(the)e(next)g(v)-9
b(alue)54 b(of)f(the)g(sequence)h(and)g(a)g(new)g(data)g(v)-9
b(alue.)73 b(If)53 b(the)581 3059 y(new)i(data)h(is)g
Fl(#f)f Fp(then)h(the)f(previous)g(elemen)-5 b(t)56 b(w)-5
b(as)56 b(the)f(last)h(one.)74 b(F)-14 b(or)56 b(example,)755
3432 y Fl(\(list*)89 b(elt)e(my-list\))581 3794 y Fp(is)56
b(the)f(same)h(as)755 4167 y Fl(\(stream*)89 b(elt)f(list->stream)h
(my-list\))581 4530 y Fp(where)55 b Fl(list->stream)j
Fp(is)755 4903 y Fl(\(lambda)89 b(\(list\))930 5102 y(\(if)f(\(null?)g
(list\))1279 5301 y(\(values)g('ignored)g(#f\))1279 5500
y(\(values)g(\(car)g(list\))g(\(cdr)g(list\)\)\)\))581
6019 y Fc(5.18.4)225 b(Sync)-6 b(hronous)72 b(sequences)581
6345 y Fp(When)50 b(using)i(the)d(sequence)h(t)-5 b(yp)5
b(es)50 b(describ)5 b(ed)51 b(ab)5 b(o)-5 b(v)g(e,)51
b(a)g(lo)5 b(op)50 b(terminates)g(when)g(an)-5 b(y)51
b(of)581 6544 y(its)58 b(sequences)g(reac)-5 b(hes)58
b(its)g(end.)81 b(T)-14 b(o)58 b(help)g(detect)f(bugs)h(it)g(is)g
(useful)g(to)g(ha)-5 b(v)g(e)58 b(sequence)581 6743 y(t)-5
b(yp)5 b(es)51 b(that)g(c)-5 b(hec)g(k)52 b(to)f(see)h(if)f(t)-5
b(w)g(o)52 b(or)f(more)h(sequences)g(end)g(on)g(the)f(same)h
(iteration.)72 b(F)-14 b(or)581 6942 y(this)49 b(purp)5
b(ose)48 b(there)g(is)g(second)h(set)f(of)g(sequence)f(t)-5
b(yp)5 b(es)48 b(called)g(sync)-5 b(hronous)50 b(sequences.)581
7142 y(These)59 b(are)f(iden)-5 b(tical)59 b(to)g(the)f(ones)h(listed)g
(ab)5 b(o)-5 b(v)g(e)59 b(except)e(that)h(they)g(cause)h(an)g(error)f
(to)581 7341 y(b)5 b(e)57 b(signalled)i(if)f(a)g(lo)5
b(op)57 b(is)h(terminated)g(b)-5 b(y)58 b(a)f(sync)-5
b(hronous)60 b(sequence)d(and)i(some)f(other)581 7540
y(sync)-5 b(hronous)57 b(sequence)f(did)g(not)f(reac)-5
b(h)55 b(its)h(end)g(on)f(the)g(same)h(iteration.)830
7749 y(Sequences)62 b(are)g(c)-5 b(hec)g(k)g(ed)62 b(for)g(termination)
g(in)g(order,)i(from)e(left)f(to)h(righ)-5 b(t,)64 b(and)e(if)g(a)581
7949 y(lo)5 b(op)56 b(is)f(terminated)h(b)-5 b(y)55 b(a)h(non-sync)-5
b(hronous)58 b(sequence)d(no)g(further)g(c)-5 b(hec)g(king)56
b(is)g(done.)830 8158 y(The)g(sync)-5 b(hronous)57 b(sequences)e(are:)
614 8488 y Fg(\017)83 b Fl(\(list\045)h Fo(elt-var)103
b(list)16 b Fl(\))3563 b Fp(syn)-5 b(tax)614 8687 y Fg(\017)83
b Fl(\(vector\045)i Fo(elt-var)102 b(ve)-8 b(ctor)18
b Fl(\))3173 b Fp(syn)-5 b(tax)614 8886 y Fg(\017)83
b Fl(\(string\045)i Fo(elt-var)102 b(string)15 b Fl(\))3193
b Fp(syn)-5 b(tax)614 9085 y Fg(\017)83 b Fl(\(count\045)i
Fo(elt-var)102 b(start)d(end)i Fl([)p Fo(step)10 b Fl(]\))2453
b Fp(syn)-5 b(tax)614 9285 y Fg(\017)83 b Fl(\(input\045)i
Fo(elt-var)102 b(input-p)-8 b(ort)99 b(r)-8 b(e)g(ad-pr)g(o)g(c)g(e)g
(dur)g(e)12 b Fl(\))1847 b Fp(syn)-5 b(tax)614 9484 y
Fg(\017)83 b Fl(\(stream\045)i Fo(elt-var)102 b(pr)-8
b(o)g(c)g(e)g(dur)g(e)94 b(initial-data)13 b Fl(\))2045
b Fp(syn)-5 b(tax)830 9813 y(Note)70 b(that)f(the)h(sync)-5
b(hronous)73 b Fl(count\045)e Fp(m)-5 b(ust)72 b(ha)-5
b(v)g(e)71 b(an)f Fo(end)17 b Fp(,)75 b(unlik)-5 b(e)71
b(the)f(nonsyn-)581 10012 y(c)-5 b(hronous)57 b Fl(count\045)p
Fp(.)3362 10511 y(49)p eop end
%%Page: 50 58
TeXDict begin 50 57 bop 1478 1046 a Fc(5.18.5)225 b(Examples)1478
1376 y Fp(Gathering)56 b(the)e(indexes)i(of)f(list)h(elemen)-5
b(ts)56 b(that)f(answ)-5 b(er)56 b(true)f(to)g(some)h(predicate.)1478
1760 y Fl(\(lambda)88 b(\(my-list)h(predicate\))1652
1959 y(\(reduce)g(\(\(list*)f(elt)g(my-list\))2437 2158
y(\(count*)g(i)f(0\)\))2350 2357 y(\(\(hits)h('\(\)\)\))1826
2557 y(\(if)g(\(predicate)h(elt\))2175 2756 y(\(cons)f(i)g(hits\))2175
2955 y(hits\))1826 3154 y(\(reverse)h(hits\)\))1478 3525
y Fp(Lo)5 b(oking)55 b(for)g(the)g(index)g(of)g(an)h(elemen)-5
b(t)55 b(of)g(a)h(list.)1478 3908 y Fl(\(lambda)88 b(\(my-list)h
(predicate\))1652 4107 y(\(iterate)g(loop)2437 4307 y(\(\(list*)f(elt)g
(my-list\))2524 4506 y(\(count*)g(i)g(0\)\))2437 4705
y(\(\))2790 b(;)87 b(no)g(state)1826 4904 y(\(if)h(\(predicate)h(elt\))
2175 5104 y(i)2175 5303 y(\(loop\)\)\)\))1478 5673 y
Fp(Reading)56 b(one)f(line.)1478 6057 y Fl(\(define)88
b(\(read-line)h(port\))1652 6256 y(\(iterate)g(loop)2437
6455 y(\(\(input*)f(c)g(port)f(read-char\)\))2437 6655
y(\(\(chars)h('\(\)\)\))1826 6854 y(\(if)g(\(char=?)h(c)e(#\\newline\))
2175 7053 y(\(list->string)j(\(reverse)e(chars\)\))2175
7252 y(\(loop)g(\(cons)g(c)g(chars\)\)\))1826 7452 y(\(if)g(\(null?)g
(chars\))2175 7651 y(\(eof-object\))2175 7850 y(;)g(no)f(newline)h(at)g
(end)g(of)f(file)2175 8049 y(\(list->string)j(\(reverse)e
(chars\)\)\)\)\))1478 8420 y Fp(Coun)-5 b(ting)57 b(the)f(lines)g(in)h
(a)f(\014le.)77 b(W)-14 b(e)55 b(can't)h(use)h Fl(count*)g
Fp(b)5 b(ecause)56 b(w)-5 b(e)57 b(need)f(the)g(v)-9
b(alue)56 b(of)1478 8619 y(the)f(coun)-5 b(t)55 b(after)g(the)g(lo)5
b(op)55 b(has)h(\014nished.)1478 9002 y Fl(\(define)88
b(\(line-count)h(name\))1652 9202 y(\(call-with-input-file)i(name)1826
9401 y(\(lambda)e(\(in\))2001 9600 y(\(reduce)f(\(\(input*)h(l)e(in)h
(read-line\)\))2698 9799 y(\(\(i)g(0\)\))2175 9999 y(\(+)g(i)f
(1\)\)\)\)\))4259 10511 y Fp(50)p eop end
%%Page: 51 59
TeXDict begin 51 58 bop 581 1046 a Fc(5.18.6)225 b(De\014ning)74
b(sequence)h(t)-6 b(yp)6 b(es)581 1353 y Fp(The)49 b(sequence)f(t)-5
b(yp)5 b(es)49 b(are)f(ob)9 b(ject-orien)-5 b(ted)49
b(macros)g(similar)h(to)f(en)-5 b(umerations.)73 b(A)48
b(non-)581 1552 y(sync)-5 b(hronous)63 b(sequence)d(macro)h(needs)g(to)
f(supply)i(three)e(v)-9 b(alues:)85 b Fl(#f)61 b Fp(to)f(indicate)g
(that)581 1751 y(it)55 b(isn't)h(sync)-5 b(hronous,)57
b(a)e(list)g(of)g(state)f(v)-9 b(ariables)56 b(and)f(their)g
(initializers,)h(and)g(the)e(co)5 b(de)581 1950 y(for)58
b(one)h(iteration.)82 b(The)58 b(\014rst)h(t)-5 b(w)g(o)58
b(metho)5 b(ds)59 b(are)f(CPS'ed:)80 b(they)58 b(tak)-5
b(e)57 b(another)h(macro)581 2150 y(and)i(argumen)-5
b(t)60 b(to)e(whic)-5 b(h)60 b(to)f(pass)h(their)f(result.)85
b(The)60 b Fl(synchronized?)87 b Fp(metho)5 b(d)59 b(gets)581
2349 y(no)72 b(additional)h(argumen)-5 b(ts.)125 b(The)72
b Fl(state-vars)h Fp(metho)5 b(d)72 b(is)h(passed)g(a)f(list)g(of)g
(names)581 2548 y(whic)-5 b(h)63 b(will)f(b)5 b(e)62
b(b)5 b(ound)63 b(to)f(the)f(argumen)-5 b(ts)64 b(to)d(the)h(sequence.)
94 b(The)62 b(\014nal)h(metho)5 b(d,)64 b(for)581 2747
y(the)46 b(step,)i(is)f(passed)g(the)f(list)g(of)g(names)h(b)5
b(ound)46 b(to)g(the)g(argumen)-5 b(ts)47 b(and)f(the)g(list)g(of)g
(state)581 2947 y(v)-9 b(ariables.)73 b(In)50 b(addition)g(there)g(is)g
(a)g(v)-9 b(ariable)50 b(to)g(b)5 b(e)49 b(b)5 b(ound)51
b(to)e(the)h(next)f(elemen)-5 b(t)50 b(of)g(the)581 3146
y(sequence,)64 b(the)e(b)5 b(o)g(dy)62 b(expression)h(for)f(the)g(lo)5
b(op,)65 b(and)d(an)h(expression)g(for)g(terminating)581
3345 y(the)55 b(lo)5 b(op.)830 3544 y(The)56 b(de\014nition)g(of)68
b Fl(list*)56 b Fp(is)581 3826 y Fl(\(define-syntax)90
b(list*)755 4025 y(\(syntax-rules)g(\(synchronized?)f(state-vars)g
(step\))930 4224 y(\(\(list*)f(synchronized?)i(\(next)e(more\)\))1017
4423 y(\(next)g(#f)g(more\)\))930 4623 y(\(\(list*)g(state-vars)h
(\(start-list\))g(\(next)f(more\)\))1017 4822 y(\(next)g(\(\(list-var)h
(start-list\)\))g(more\)\))930 5021 y(\(\(list*)f(step)g
(\(start-list\))h(\(list-var\))1627 5220 y(value-var)g(loop-body)g
(final-exp\))1017 5420 y(\(if)f(\(null?)g(list-var\))1366
5619 y(final-exp)1366 5818 y(\(let)g(\(\(value-var)h(\(car)e
(list-var\)\))1889 6017 y(\(list-var)h(\(cdr)g(list-var\)\)\))1540
6217 y(loop-body\)\)\)\)\))830 6498 y Fp(Sync)-5 b(hronized)71
b(sequences)g(are)f(the)f(same,)75 b(except)69 b(that)h(they)f(need)h
(to)g(pro)-5 b(vide)71 b(a)581 6697 y(termination)61
b(test)e(to)h(b)5 b(e)60 b(used)h(when)f(some)h(other)f(sync)-5
b(hronized)62 b(metho)5 b(d)60 b(terminates)581 6896
y(the)55 b(lo)5 b(op.)581 7178 y Fl(\(define-syntax)90
b(list\045)755 7377 y(\(syntax-rules)g(\(sync)e(done\))930
7576 y(\(\(list\045)g(sync)g(\(next)g(more\)\))1017 7775
y(\(next)g(#t)g(more\)\))930 7975 y(\(\(list\045)g(done)g
(\(start-list\))h(\(list-var\)\))1017 8174 y(\(null?)f(list-var\)\))930
8373 y(\(\(list\045)g(stuff)g(...\))1017 8572 y(\(list*)g(stuff)g
(...\)\)\)\))581 9026 y Fc(5.18.7)225 b(Expanded)74 b(co)6
b(de)581 9333 y Fp(The)55 b(expansion)i(of)755 9614 y
Fl(\(reduce)89 b(\(\(list*)f(x)g('\(1)f(2)h(3\)\)\))1453
9813 y(\(\(r)g('\(\)\)\))930 10012 y(\(cons)g(x)f(r\)\))3362
10511 y Fp(51)p eop end
%%Page: 52 60
TeXDict begin 52 59 bop 1478 1046 a Fp(is)1652 1371 y
Fl(\(let)88 b(\(\(final)g(\(lambda)h(\(r\))e(\(values)i(r\)\)\))2175
1570 y(\(list)f('\(1)g(2)f(3\)\))2175 1769 y(\(r)h('\(\)\)\))1826
1969 y(\(let)g(loop)g(\(\(list)g(list\))g(\(r)g(r\)\))2001
2168 y(\(if)g(\(null?)g(list\))2350 2367 y(\(final)g(r\))2350
2566 y(\(let)f(\(\(x)h(\(car)g(list\)\))2873 2766 y(\(list)g(\(cdr)f
(list\)\)\))2524 2965 y(\(let)h(\(\(continue)h(\(lambda)f(\(r\))4093
3164 y(\(loop)g(list)g(r\)\)\)\))2698 3363 y(\(continue)h(\(cons)f(x)f
(r\)\)\)\)\)\)\))1727 3688 y Fp(The)52 b(only)g(ine\016ciencies)h(in)g
(this)f(co)5 b(de)52 b(are)g(the)g Fl(final)h Fp(and)f
Fl(continue)i Fp(pro)5 b(cedures,)1478 3887 y(b)g(oth)62
b(of)h(whic)-5 b(h)63 b(could)g(b)5 b(e)63 b(substituted)g(in-line.)97
b(The)63 b(macro)g(expander)g(could)g(do)g(the)1478 4086
y(substitution)57 b(for)e Fl(continue)j Fp(when)e(there)f(is)h(no)h
(explicit)e(pro)5 b(ceed)55 b(v)-9 b(ariable,)56 b(as)h(in)f(this)1478
4286 y(case,)f(but)h(not)f(in)h(general.)1478 4833 y
Fi(5.19)270 b(Sorting)91 b(lists)e(and)h(v)-7 b(ectors)1478
5197 y Fp(\(This)62 b(section,)h(as)f(the)f(libraries)i(it)e(describ)5
b(es,)64 b(w)-5 b(as)62 b(written)f(mostly)g(b)-5 b(y)62
b(Olin)g(Shiv)-5 b(ers)1478 5396 y(for)55 b(the)g(draft)g(of)g(SRFI)h
(32.\))1727 5595 y(The)f(sort)h(libraries)g(in)g(Sc)-5
b(heme)56 b(48)f(include)1727 5920 y Fg(\017)83 b Fp(v)-5
b(ector)54 b(insert)i(sort)g(\(stable\))1727 6249 y Fg(\017)83
b Fp(v)-5 b(ector)54 b(heap)i(sort)1727 6577 y Fg(\017)83
b Fp(v)-5 b(ector)54 b(merge)i(sort)f(\(stable\))1727
6905 y Fg(\017)83 b Fp(pure)56 b(and)f(destructiv)-5
b(e)55 b(list)h(merge)g(sort)f(\(stable\))1727 7234 y
Fg(\017)83 b Fp(stable)56 b(v)-5 b(ector)54 b(and)i(list)g(merge)1727
7562 y Fg(\017)83 b Fp(miscellaneous)89 b(sort-related)e(pro)5
b(cedures:)138 b(v)-5 b(ector)87 b(and)h(list)f(merging,)96
b(sorted)1893 7761 y(predicates,)47 b(v)-5 b(ector)43
b(binary)i(searc)-5 b(h,)47 b(v)-5 b(ector)44 b(and)g(list)h
(delete-equal-neigh)-5 b(b)5 b(or)45 b(pro-)1893 7961
y(cedures.)1727 8289 y Fg(\017)83 b Fp(a)53 b(general,)h
(non-algorithmic)h(set)e(of)g(pro)5 b(cedure)53 b(names)h(for)g
(general)f(sorting)h(and)1893 8488 y(merging)1478 8951
y Fc(5.19.1)225 b(Design)75 b(rules)1478 9258 y Fm(What)44
b(vs.)78 b(ho)-5 b(w)166 b Fp(There)38 b(are)g(t)-5 b(w)g(o)38
b(di\013eren)-5 b(t)38 b(in)-5 b(terfaces:)65 b(\\what")38
b(\(simple\))g(and)h(\\ho)-5 b(w")1478 9457 y(\(detailed\).)1478
9813 y Fm(Simple)83 b Fp(y)-5 b(ou)66 b(sp)5 b(ecify)66
b(seman)-5 b(tics:)98 b(datat)-5 b(yp)5 b(e)65 b(\(list)i(or)f(v)-5
b(ector\),)69 b(m)-5 b(utabilit)g(y)-14 b(,)70 b(and)d(sta-)1893
10012 y(bilit)-5 b(y)-14 b(.)4259 10511 y(52)p eop end
%%Page: 53 61
TeXDict begin 53 60 bop 581 1046 a Fm(Detailed)83 b Fp(y)-5
b(ou)50 b(sp)5 b(ecify)49 b(the)h(actual)f(algorithm)i(\(quic)-5
b(k,)50 b(heap,)i(insert,)f(merge\).)72 b(Di\013er-)996
1245 y(en)-5 b(t)51 b(algorithms)h(ha)-5 b(v)g(e)51 b(di\013eren)-5
b(t)51 b(prop)5 b(erties,)52 b(b)5 b(oth)51 b(seman)-5
b(tic)52 b(and)f(pragmatic,)h(so)996 1445 y(these)k(exp)5
b(orts)54 b(are)h(necessary)-14 b(.)996 1715 y(It)56
b(is)i(necessarily)f(the)f(case)h(that)f(the)g(sp)5 b(eci\014cations)58
b(of)e(these)g(pro)5 b(cedures)57 b(mak)-5 b(e)996 1915
y(statemen)g(ts)60 b(ab)5 b(out)58 b(execution)h(\\pragmatics.")86
b(F)-14 b(or)59 b(example,)h(the)f(sole)h(distinc-)996
2114 y(tion)46 b(b)5 b(et)-5 b(w)g(een)45 b(heap)g(sort)h(and)g(quic)-5
b(k)45 b(sort|b)5 b(oth)45 b(of)g(whic)-5 b(h)46 b(are)g(pro)-5
b(vided)46 b(b)-5 b(y)45 b(this)996 2313 y(library|-is)60
b(one)f(of)g(execution)f(time,)i(whic)-5 b(h)60 b(is)f(not)g(a)g
(\\seman)-5 b(tic")60 b(distinction.)996 2512 y(Similar)75
b(resource-use)f(statemen)-5 b(ts)74 b(are)f(made)h(ab)5
b(out)73 b(\\iterativ)-5 b(e")72 b(pro)5 b(cedures,)996
2712 y(meaning)72 b(that)e(they)g(can)h(execute)f(on)h(input)g(of)g
(arbitrary)f(size)h(in)g(a)g(constan)-5 b(t)996 2911
y(n)g(um)g(b)5 b(er)57 b(of)e(stac)-5 b(k)55 b(frames.)581
3356 y Fm(Consistency)66 b(across)g(pro)5 b(cedure)65
b(signatures)167 b Fp(The)56 b(t)-5 b(w)g(o)58 b(in)-5
b(terfaces)57 b(share)g(com-)581 3556 y(mon)d(pro)5 b(cedure)54
b(signatures)h(wherev)-5 b(er)53 b(p)5 b(ossible,)55
b(to)f(facilitate)e(switc)-5 b(hing)55 b(a)f(giv)-5 b(en)54
b(call)581 3755 y(from)i(one)f(pro)5 b(cedure)55 b(to)g(another.)581
4200 y Fm(Less-than)61 b(parameter)f(\014rst,)i(data)g(parameter)e
(after)165 b Fp(These)54 b(pro)5 b(cedures)54 b(uni-)581
4400 y(formly)48 b(observ)-5 b(e)48 b(the)f(follo)-5
b(wing)48 b(parameter)g(order:)70 b(the)47 b(data)g(to)h(b)5
b(e)47 b(sorted)g(comes)i(after)581 4599 y(the)55 b(comparison)i(pro)5
b(cedure.)74 b(That)55 b(is,)h(w)-5 b(e)55 b(write)755
4977 y Fl(\(sort)89 b Fd(<)e Fo(list)16 b Fl(\))830 5353
y Fp(not)755 5731 y Fl(\(sort)89 b Fo(list)103 b Fd(<)p
Fl(\))581 6177 y Fm(Ordering,)83 b(comparison)c(pro)5
b(cedures)79 b(and)g(stabilit)-5 b(y)166 b Fp(These)69
b(routines)g(tak)-5 b(e)68 b(a)581 6376 y Fd(<)75 b Fp(comparison)h
(pro)5 b(cedure,)80 b(not)75 b(a)g Fg(\024)g Fp(comparison)h(pro)5
b(cedure,)80 b(and)75 b(they)f(sort)h(in)-5 b(to)581
6575 y(increasing)66 b(order.)105 b(The)65 b(di\013erence)g(b)5
b(et)-5 b(w)g(een)65 b(a)h Fd(<)f Fp(sp)5 b(ec)65 b(and)h(a)g
Fg(\024)f Fp(sp)5 b(ec)66 b(comes)f(up)h(in)581 6775
y(t)-5 b(w)g(o)56 b(places:)830 7150 y Fg(\017)83 b Fp(the)55
b(de\014nition)h(of)f(an)h(ordered)f(or)h(sorted)f(data)h(set,)f(and)
830 7493 y Fg(\017)83 b Fp(the)55 b(de\014nition)h(of)f(a)h(stable)f
(sorting)h(algorithm.)830 7869 y(W)-14 b(e)50 b(sa)-5
b(y)51 b(that)e(a)h(data)g(set)g(\(a)g(list)g(or)h(v)-5
b(ector\))48 b(is)j Fo(sorte)-8 b(d)67 b Fp(or)50 b Fo(or)-8
b(der)g(e)g(d)67 b Fp(if)50 b(it)f(con)-5 b(tains)51
b(no)581 8068 y(adjacen)-5 b(t)55 b(pair)h(of)f(v)-9
b(alues)56 b Fd(:)28 b(:)g(:)f(x;)h(y)34 b(:)28 b(:)g(:)55
b Fp(suc)-5 b(h)56 b(that)f Fd(y)e(<)46 b(x)p Fp(.)830
8270 y(In)56 b(other)f(w)-5 b(ords,)56 b(scanning)h(across)f(the)f
(data)g(nev)-5 b(er)56 b(tak)-5 b(es)55 b(a)g(\\do)-5
b(wn)g(w)g(ards")58 b(step.)830 8472 y(If)53 b(y)-5 b(ou)53
b(use)g(a)g Fg(\024)g Fp(pro)5 b(cedure)52 b(where)h(these)f
(algorithms)i(exp)5 b(ect)51 b(a)i Fd(<)g Fp(pro)5 b(cedure,)53
b(y)-5 b(ou)581 8671 y(ma)g(y)43 b(not)f(get)f(the)h(answ)-5
b(ers)44 b(y)-5 b(ou)42 b(exp)5 b(ect.)68 b(F)-14 b(or)43
b(example,)i(the)c Fl(list-sorted?)72 b Fp(pro)5 b(cedure)581
8870 y(will)69 b(return)g(false)g(if)g(y)-5 b(ou)69 b(pass)i(it)d(a)h
Fg(\024)g Fp(comparison)i(pro)5 b(cedure)69 b(and)g(an)g(ordered)g
(list)581 9070 y(con)-5 b(taining)56 b(adjacen)-5 b(t)55
b(equal)h(elemen)-5 b(ts.)830 9271 y(A)43 b(\\stable")h(sort)f(is)i
(one)e(that)g(preserv)-5 b(es)44 b(the)f(pre-existing)h(order)g(of)f
(equal)g(elemen)-5 b(ts.)581 9471 y(Supp)5 b(ose,)46
b(for)41 b(example,)j(that)d(w)-5 b(e)42 b(sort)g(a)g(list)g(of)f(n)-5
b(um)g(b)5 b(ers)43 b(b)-5 b(y)42 b(comparing)h(their)e(absolute)581
9670 y(v)-9 b(alues,)56 b(i.e.,)f(using)i(comparison)g(pro)5
b(cedure)581 10012 y Fl(\(lambda)89 b(\(x)e(y\))h(\(<)f(\(abs)h(x\))f
(\(abs)h(y\)\)\))3362 10511 y Fp(53)p eop end
%%Page: 54 62
TeXDict begin 54 61 bop 1478 1046 a Fp(If)55 b(w)-5 b(e)55
b(sort)h(a)f(list)h(that)f(con)-5 b(tains)56 b(b)5 b(oth)55
b(3)g(and)h(-3:)3789 1336 y Fd(:)28 b(:)g(:)f Fp(3)p
Fd(;)h(:)g(:)g(:)f(;)h Fg(\000)p Fp(3)g Fd(:)g(:)g(:)1478
1627 y Fp(then)73 b(a)g(stable)h(sort)g(is)g(an)f(algorithm)h(that)f
(will)g(not)h(sw)-5 b(ap)74 b(the)f(order)h(of)f(these)g(t)-5
b(w)g(o)1478 1826 y(elemen)g(ts,)56 b(that)f(is,)h(the)f(answ)-5
b(er)56 b(is)g(guaran)-5 b(teed)56 b(to)f(to)g(lo)5 b(ok)54
b(lik)-5 b(e)3936 2116 y Fd(:)28 b(:)g(:)g Fp(3)p Fd(;)g
Fg(\000)p Fp(3)g Fd(:)g(:)g(:)1478 2406 y Fp(not)3913
2606 y Fd(:)g(:)g(:)37 b Fg(\000)g Fp(3)p Fd(;)28 b Fp(3)g
Fd(:)g(:)g(:)1478 2859 y Fp(Cho)5 b(osing)61 b Fd(<)g
Fp(for)g(the)g(comparison)h(pro)5 b(cedure)61 b(instead)g(of)g
Fg(\024)g Fp(a\013ects)f(ho)-5 b(w)62 b(stabilit)-5 b(y)61
b(is)1478 3059 y(co)5 b(ded.)70 b(Giv)-5 b(en)46 b(an)g(adjacen)-5
b(t)45 b(pair)h Fd(x;)28 b(y)6 b Fp(,)48 b Fl(\(<)87
b Fd(y)94 b(x)p Fl(\))45 b Fp(means)i(\\)p Fd(x)e Fp(should)i(b)5
b(e)45 b(mo)-5 b(v)g(ed)46 b(in)g(fron)-5 b(t)1478 3258
y(of)59 b Fd(x)p Fp("|otherwise,)j(lea)-5 b(v)g(e)60
b(things)g(as)h(they)e(are.)87 b(So)61 b(using)g(a)f
Fg(\024)g Fp(pro)5 b(cedure)59 b(where)h(a)g Fd(<)1478
3457 y Fp(pro)5 b(cedure)55 b(is)h(exp)5 b(ected)54 b(will)h
Fo(invert)73 b Fp(stabilit)-5 b(y)-14 b(.)1727 3656 y(This)56
b(is)g(due)g(to)f(the)g(de\014nition)g(of)h(equalit)-5
b(y)-14 b(,)55 b(giv)-5 b(en)55 b(a)h Fd(<)f Fp(comparator:)1826
3928 y Fl(\(and)88 b(\(not)g(\(<)g(x)f(y\)\))2262 4128
y(\(not)h(\(<)g(y)f(x\)\)\))1478 4400 y Fp(The)55 b(de\014nition)h(is)g
(rather)f(di\013eren)-5 b(t,)56 b(giv)-5 b(en)55 b(a)h
Fg(\024)f Fp(comparator:)1826 4672 y Fl(\(and)88 b(\(<=)g(x)f(y\))2262
4871 y(\(<=)h(y)f(x\)\))1478 5143 y Fp(A)73 b(\\stable")i(merge)f(is)g
(one)g(that)g(reliably)g(fa)-5 b(v)g(ors)74 b(one)g(of)g(its)g(data)g
(sets)g(when)g(equal)1478 5342 y(items)59 b(app)5 b(ear)59
b(in)g(b)5 b(oth)58 b(data)h(sets.)84 b Fo(A)l(l)8 b(l)64
b(mer)-8 b(ge)63 b(op)-8 b(er)g(ations)62 b(in)h(this)f(libr)-8
b(ary)63 b(ar)-8 b(e)62 b(stable)p Fp(,)1478 5542 y(breaking)j(ties)g
(b)5 b(et)-5 b(w)g(een)65 b(data)g(sets)g(in)h(fa)-5
b(v)g(or)65 b(of)g(the)g(\014rst)g(data)g(set|elemen)-5
b(ts)66 b(of)f(the)1478 5741 y(\014rst)55 b(list)h(come)f(b)5
b(efore)55 b(equal)g(elemen)-5 b(ts)56 b(in)g(the)f(second)h(list.)1727
5940 y(So,)73 b(if)68 b(w)-5 b(e)69 b(are)g(merging)h(t)-5
b(w)g(o)69 b(lists)h(of)e(n)-5 b(um)g(b)5 b(ers)71 b(ordered)e(b)-5
b(y)69 b(absolute)h(v)-9 b(alue,)72 b(the)1478 6139 y(stable)55
b(merge)h(op)5 b(eration)55 b Fl(list-merge)1826 6411
y(\(list-merge)90 b(\(lambda)e(\(x)f(y\))h(\(<)f(\(abs)h(x\))g(\(abs)g
(y\)\)\))2873 6611 y('\(0)f(-2)h(4)f(8)g(-10\))h('\(-1)g(3)g(-4)f
(7\)\))1478 6883 y Fp(reliably)51 b(places)g(the)g(4)g(of)g(the)f
(\014rst)i(list)f(b)5 b(efore)50 b(the)h(equal-comparing)h(-4)f(of)g
(the)g(second)1478 7082 y(list:)1826 7354 y Fl(\(0)88
b(-1)g(-2)f(4)g(-4)h(7)f(8)h(-10\))1478 7626 y Fp(Some)51
b(sort)g(algorithms)i(will)e Fo(not)56 b(work)g(c)-8
b(orr)g(e)g(ctly)65 b Fp(if)51 b(giv)-5 b(en)52 b(a)f
Fg(\024)g Fp(when)g(they)g(exp)5 b(ect)49 b(a)i Fd(<)1478
7825 y Fp(comparison)57 b(\(or)d(vice-v)-5 b(ersa\).)1727
8024 y(In)55 b(short,)h(if)f(y)-5 b(our)56 b(comparison)h(pro)5
b(cedure)55 b Fd(f)74 b Fp(answ)-5 b(ers)56 b(true)f(to)g
Fl(\()p Fd(f)106 b Fl(x)87 b(x\))p Fp(,)56 b(then)1727
8297 y Fg(\017)83 b Fp(using)52 b(a)g(stable)f(sorting)h(or)f(merging)h
(algorithm)g(will)f(not)h(giv)-5 b(e)51 b(y)-5 b(ou)51
b(a)h(stable)f(sort)1893 8496 y(or)k(merge,)1727 8798
y Fg(\017)83 b Fl(list-sorted?)76 b Fp(ma)-5 b(y)56 b(surprise)g(y)-5
b(ou.)1478 9070 y(Note)54 b(that)h(y)-5 b(ou)55 b(can)h(syn)-5
b(thesize)56 b(a)f Fd(<)h Fp(pro)5 b(cedure)55 b(from)g(a)h
Fg(\024)f Fp(pro)5 b(cedure)55 b(with)1826 9342 y Fl(\(lambda)89
b(\(x)e(y\))h(\(not)g(\(<=)f(y)h(x\)\)\))1478 9614 y
Fp(if)55 b(need)g(b)5 b(e.)1727 9813 y(Precise)56 b(de\014nitions)i
(giv)-5 b(e)56 b(sharp)h(edges)g(to)f(to)5 b(ols,)56
b(but)g(require)g(care)g(in)h(use.)77 b(\\Mea-)1478 10012
y(sure)56 b(t)-5 b(wice,)55 b(cut)g(once.")4259 10511
y(54)p eop end
%%Page: 55 63
TeXDict begin 55 62 bop 581 1046 a Fm(All)46 b(v)-5 b(ector)44
b(op)5 b(erations)46 b(accept)e(optional)j(subrange)e(parameters)164
b Fp(The)39 b(v)-5 b(ector)581 1245 y(op)5 b(erations)60
b(sp)5 b(eci\014ed)61 b(b)5 b(elo)-5 b(w)60 b(all)g(tak)-5
b(e)59 b(optional)i Fl(start)p Fp(/)p Fl(end)g Fp(argumen)-5
b(ts)61 b(indicating)g(a)581 1445 y(selected)67 b(subrange)h(of)f(a)g
(v)-5 b(ector's)67 b(elemen)-5 b(ts.)109 b(If)67 b(a)g
Fl(start)h Fp(parameter)f(or)g Fl(start)p Fp(/)p Fl(end)581
1644 y Fp(parameter)59 b(pair)g(is)g(giv)-5 b(en)59 b(to)f(suc)-5
b(h)60 b(a)f(pro)5 b(cedure,)59 b(they)f(m)-5 b(ust)60
b(b)5 b(e)58 b(exact,)g(non-negativ)-5 b(e)581 1843 y(in)g(tegers,)56
b(suc)-5 b(h)57 b(that)1840 2273 y(0)46 b Fg(\024)g Fo(start)62
b Fg(\024)47 b Fo(end)63 b Fg(\024)47 b Fl(\(vector-length)89
b Fo(ve)-8 b(ctor)19 b Fl(\))581 2702 y Fp(where)64 b
Fo(ve)-8 b(ctor)83 b Fp(is)64 b(the)g(related)g(v)-5
b(ector)63 b(parameter.)100 b(If)63 b(not)h(sp)5 b(eci\014ed,)67
b(they)c(default)h(to)581 2902 y(0)59 b(and)g(the)f(length)h(of)g(the)f
(v)-5 b(ector,)59 b(resp)5 b(ectiv)-5 b(ely)-14 b(.)83
b(They)58 b(are)h(in)-5 b(terpreted)58 b(to)h(select)f(the)581
3101 y(range)64 b([)p Fo(start)16 b Fd(;)28 b Fo(end)17
b Fp(\),)65 b(that)e(is,)j(all)d(elemen)-5 b(ts)64 b(from)g(index)f
Fo(start)79 b Fp(\(inclusiv)-5 b(e\))64 b(up)g(to,)h(but)581
3300 y(not)55 b(including,)i(index)e Fo(end)18 b Fp(.)581
3902 y Fm(Required)79 b(vs.)i(allo)-5 b(w)g(ed)79 b(side-e\013ects)166
b Fl(List-sort!)118 b Fp(and)71 b Fl(List-stable-sort!)581
4102 y Fp(are)61 b(allo)-5 b(w)g(ed,)63 b(but)e(not)f(required,)i(to)f
(alter)f(their)g(argumen)-5 b(ts')62 b(cons)g(cells)f(to)f(construct)
581 4301 y(the)54 b(result)g(list.)74 b(This)54 b(is)h(consisten)-5
b(t)54 b(with)g(the)g(what-not-ho)-5 b(w)54 b(c)-5 b(haracter)54
b(of)g(the)f(group)581 4500 y(of)i(pro)5 b(cedures)56
b(to)f(whic)-5 b(h)56 b(they)f(b)5 b(elong)55 b(\(the)g
Fl(sorting)h Fp(structure\).)830 4732 y(The)j Fl
(list-delete-neighbor-dups!)p Fp(,)64 b Fl(list-merge!)85
b Fp(and)59 b Fl(list-merge-sort!)581 4931 y Fp(pro)5
b(cedures,)50 b(on)f(the)f(other)f(hand,)k(pro)-5 b(vide)49
b(sp)5 b(eci\014c)48 b(algorithms,)j(and,)f(as)f(suc)-5
b(h,)51 b(explic-)581 5130 y(itly)60 b(commit)h(to)g(the)f(use)i(of)e
(side-e\013ects)h(on)h(their)e(input)h(lists)h(in)f(order)g(to)g
(guaran)-5 b(tee)581 5329 y(their)55 b(k)-5 b(ey)55 b(algorithmic)h
(prop)5 b(erties)55 b(\(e.g.,)g(linear-time)h(op)5 b(eration\).)581
5965 y Fc(5.19.2)225 b(Pro)6 b(cedure)74 b(sp)6 b(eci\014cation)688
6327 y Fp(Structure)55 b(name)1340 b(F)-14 b(unctionalit)-5
b(y)p 588 6393 5715 7 v 688 6533 a Fl(sorting)1857 b
Fp(General)55 b(sorting)h(for)f(lists)i(and)e(v)-5 b(ectors)688
6732 y Fl(sorted)1944 b Fp(Sorted)55 b(predicates)g(for)h(lists)g(and)g
(v)-5 b(ectors)688 6931 y Fl(list-merge-sort)1161 b Fp(List)55
b(merge)g(sort)688 7130 y Fl(vector-merge-sort)987 b
Fp(V)-14 b(ector)54 b(merge)h(sort)688 7330 y Fl(vector-heap-sort)1074
b Fp(V)-14 b(ector)54 b(heap)i(sort)688 7529 y Fl(vector-insert-sort)
900 b Fp(V)-14 b(ector)54 b(insertion)i(sort)688 7728
y Fl(delete-neighbor-duplicates)204 b Fp(List)55 b(and)h(v)-5
b(ector)54 b(delete)h(neigh)-5 b(b)5 b(or)56 b(duplicates)688
7927 y Fl(binary-searches)1161 b Fp(V)-14 b(ector)54
b(binary)i(searc)-5 b(h)581 8414 y(Note)51 b(that)g(there)g(is)h(no)g
(\\list)g(insert)g(sort")g(pac)-5 b(k)c(age,)52 b(as)g(y)-5
b(ou)52 b(migh)-5 b(t)52 b(as)h(w)-5 b(ell)52 b(alw)-5
b(a)g(ys)52 b(use)581 8613 y(list)57 b(merge)g(sort.)79
b(The)57 b(reference)f(implemen)-5 b(tation's)59 b(destructiv)-5
b(e)56 b(list)h(merge)g(sort)g(will)581 8812 y(do)f(few)-5
b(er)55 b Fl(set-cdr!)p Fp(s)i(than)e(a)h(destructiv)-5
b(e)55 b(insert)g(sort.)581 9415 y Fm(Pro)5 b(cedure)90
b(naming)h(and)g(functionalit)-5 b(y)167 b Fp(Almost)79
b(all)g(of)g(the)f(pro)5 b(cedures)79 b(de-)581 9614
y(scrib)5 b(ed)55 b(b)5 b(elo)-5 b(w)54 b(are)g(v)-9
b(arian)k(ts)54 b(of)g(t)-5 b(w)g(o)54 b(basic)h(op)5
b(erations:)73 b(sorting)55 b(and)f(merging.)74 b(These)581
9813 y(pro)5 b(cedures)54 b(are)f(consisten)-5 b(tly)53
b(named)h(b)-5 b(y)54 b(comp)5 b(osing)54 b(a)f(set)g(of)g(basic)h
(lexemes)f(to)g(indi-)581 10012 y(cate)i(what)g(they)f(do.)3362
10511 y(55)p eop end
%%Page: 56 64
TeXDict begin 56 63 bop 1675 1020 a Fp(Lexeme)199 b(Meaning)p
1576 1086 5533 7 v 1675 1225 a Fl(sort)403 b Fp(The)66
b(pro)5 b(cedure)66 b(sorts)g(its)g(input)h(data)f(set)f(b)-5
b(y)67 b(some)f Fd(<)g Fp(comparison)2426 1425 y(pro)5
b(cedure.)1675 1624 y Fl(merge)316 b Fp(The)37 b(pro)5
b(cedure)37 b(merges)g(t)-5 b(w)g(o)37 b(ordered)g(data)g(sets)g(in)-5
b(to)38 b(a)f(single)h(ordered)2426 1823 y(result.)1675
2022 y Fl(stable)229 b Fp(This)56 b(lexeme)f(indicates)h(that)e(the)h
(sort)h(is)g(a)f(stable)h(one.)1675 2222 y Fl(vector)229
b Fp(The)55 b(pro)5 b(cedure)55 b(op)5 b(erates)55 b(up)5
b(on)56 b(v)-5 b(ectors.)1675 2421 y Fl(list)403 b Fp(The)55
b(pro)5 b(cedure)55 b(op)5 b(erates)55 b(up)5 b(on)56
b(lists.)1675 2620 y Fl(!)664 b Fp(Pro)5 b(cedures)57
b(that)f(end)h(in)f Fl(!)78 b Fp(are)57 b(allo)-5 b(w)g(ed,)58
b(and)f(sometimes)h(required,)2426 2819 y(to)d(reuse)h(their)f(input)g
(storage)h(to)f(construct)g(their)g(answ)-5 b(er.)1478
3247 y Fm(T)g(yp)5 b(es)46 b(of)h(parameters)e(and)h(return)g(v)-11
b(alues)166 b Fp(In)40 b(the)g(pro)5 b(cedures)40 b(sp)5
b(eci\014ed)41 b(b)5 b(elo)-5 b(w,)1727 3581 y Fg(\017)83
b Fp(A)65 b Fl(<)h Fp(or)g Fl(=)g Fp(parameter)g(is)g(a)g(pro)5
b(cedure)65 b(accepting)h(t)-5 b(w)g(o)66 b(argumen)-5
b(ts)67 b(tak)-5 b(en)65 b(from)1893 3780 y(the)55 b(sp)5
b(eci\014ed)56 b(pro)5 b(cedure's)55 b(data)h(set\(s\),)f(and)g
(returning)h(a)f(b)5 b(o)g(olean;)1727 4115 y Fg(\017)83
b Fl(Start)g Fp(and)g Fl(end)f Fp(parameters)h(are)f(exact,)87
b(non-negativ)-5 b(e)83 b(in)-5 b(tegers)83 b(that)e(serv)-5
b(e)1893 4314 y(as)69 b(v)-5 b(ector)68 b(indices)i(selecting)f(a)g
(subrange)h(of)f(some)g(asso)5 b(ciated)69 b(v)-5 b(ector.)114
b(When)1893 4514 y(sp)5 b(eci\014ed,)56 b(they)e(m)-5
b(ust)57 b(satisfy)e(the)g(relation)2944 4880 y(0)46
b Fg(\024)g Fo(start)62 b Fg(\024)47 b Fo(end)64 b Fg(\024)46
b Fl(\(vector-length)89 b Fo(ve)-8 b(ctor)19 b Fl(\))1893
5247 y Fp(where)55 b Fo(ve)-8 b(ctor)74 b Fp(is)56 b(the)f(asso)5
b(ciated)55 b(v)-5 b(ector.)1478 5581 y(P)g(assing)71
b(v)-9 b(alues)70 b(to)f(pro)5 b(cedures)71 b(with)e(these)h
(parameters)g(that)f(do)h(not)g(satisfy)f(these)1478
5780 y(t)-5 b(yp)5 b(es)55 b(is)h(an)f(error.)1727 5980
y(If)50 b(a)h(pro)5 b(cedure)50 b(is)h(said)h(to)e(return)g(\\unsp)5
b(eci\014ed,")53 b(this)e(means)g(that)f(nothing)h(at)f(all)1478
6179 y(is)e(said)h(ab)5 b(out)48 b(what)g(the)f(pro)5
b(cedure)48 b(returns,)i(not)e(ev)-5 b(en)48 b(the)f(n)-5
b(um)g(b)5 b(er)49 b(of)f(return)g(v)-9 b(alues.)1478
6378 y(Suc)k(h)62 b(a)g(pro)5 b(cedure)62 b(is)g(not)g(ev)-5
b(en)62 b(required)f(to)h(b)5 b(e)61 b(consisten)-5 b(t)63
b(from)e(call)h(to)g(call)g(in)g(the)1478 6578 y(nature)j(or)g(n)-5
b(um)g(b)5 b(er)66 b(of)f(its)g(return)g(v)-9 b(alues.)102
b(It)65 b(is)h(simply)f(required)g(to)g(return)g(a)g(v)-9
b(alue)1478 6777 y(\(or)64 b(v)-9 b(alues\))64 b(that)g(ma)-5
b(y)65 b(b)5 b(e)64 b(passed)i(to)e(a)g(command)i(con)-5
b(tin)g(uation,)68 b(e.g.)101 b(as)65 b(the)f(v)-9 b(alue)1478
6976 y(of)69 b(an)h(expression)g(app)5 b(earing)70 b(as)g(a)g
(non-terminal)g(subform)h(of)e(a)h Fl(begin)g Fp(expression.)1478
7176 y(Note)59 b(that)g(in)i(R)2569 7115 y Fj(5)2643
7176 y Fp(RS,)g(this)f(restricts)g(suc)-5 b(h)62 b(a)e(pro)5
b(cedure)60 b(to)f(returning)i(a)f(single)h(v)-9 b(alue;)1478
7375 y(non-R)1922 7314 y Fj(5)1997 7375 y Fp(RS)56 b(systems)g(ma)-5
b(y)56 b(not)f(ev)-5 b(en)56 b(pro)-5 b(vide)55 b(this)h(restriction.)
1478 7810 y Fl(sorting)p Fm(|general)64 b(sorting)h(pac)-5
b(k)-11 b(age)1478 8118 y Fp(This)42 b(library)f(pro)-5
b(vides)42 b(basic)g(sorting)g(and)g(merging)f(functionalit)-5
b(y)41 b(suitable)h(for)f(general)1478 8317 y(programming.)141
b(The)77 b(pro)5 b(cedures)78 b(are)f(named)h(b)-5 b(y)78
b(their)f(seman)-5 b(tic)78 b(prop)5 b(erties,)83 b(i.e.,)1478
8516 y(what)55 b(they)g(do)g(to)g(the)g(data)g(\(sort,)g(stable)h
(sort,)g(merge,)f(and)h(so)g(forth\).)1511 8817 y Fg(\017)83
b Fl(\(list-sorted?)102 b Fd(<)83 b Fo(list)16 b Fl(\))84
b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)1511 9016 y Fg(\017)83
b Fl(\(list-merge)i Fd(<)e Fo(list)3147 9041 y Fj(1)3305
9016 y Fo(list)3521 9041 y Fj(2)3596 9016 y Fl(\))g Fg(!)g
Fo(list)1511 9215 y Fg(\017)g Fl(\(list-merge!)102 b
Fd(<)83 b Fo(list)3251 9240 y Fj(1)3409 9215 y Fo(list)3625
9240 y Fj(2)3700 9215 y Fl(\))g Fg(!)g Fo(list)1511 9415
y Fg(\017)g Fl(\(list-sort)i Fd(<)e Fo(lis)14 b Fl(\))83
b Fg(!)g Fo(list)1511 9614 y Fg(\017)g Fl(\(list-sort!)102
b Fd(<)83 b Fo(lis)14 b Fl(\))83 b Fg(!)g Fo(list)1511
9813 y Fg(\017)g Fl(\(list-stable-sort)j Fd(<)d Fo(list)16
b Fl(\))84 b Fg(!)f Fo(list)1511 10012 y Fg(\017)g Fl
(\(list-stable-sort!)103 b Fd(<)83 b Fo(list)16 b Fl(\))84
b Fg(!)f Fo(list)4259 10511 y Fp(56)p eop end
%%Page: 57 65
TeXDict begin 57 64 bop 614 1046 a Fg(\017)83 b Fl
(\(list-delete-neighbor-dups)88 b Fp(=)83 b Fo(list)16
b Fl(\))83 b Fg(!)g Fo(list)614 1245 y Fg(\017)g Fl(\(vector-sorted?)
103 b Fd(<)83 b Fo(v)h([start)f([end]])17 b Fl(\))84
b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)614 1445 y Fg(\017)83
b Fl(\(vector-merge)j Fd(<)d Fo(v)2285 1470 y Fj(1)2443
1445 y Fo(v)2519 1470 y Fj(2)2677 1445 y Fo([start)p
Fp(1)g Fo([end)p Fp(1)g Fo([start)p Fp(2)g Fo([end)p
Fp(2)p Fo(]]]])17 b Fl(\))84 b Fg(!)f Fo(ve)-8 b(ctor)614
1644 y Fg(\017)83 b Fl(\(vector-merge!)j Fd(<)d Fo(v)g(v)2531
1669 y Fj(1)2689 1644 y Fo(v)2765 1669 y Fj(2)2923 1644
y Fo([start)g([start)p Fp(1)g Fo([end)p Fp(1)h Fo([start)p
Fp(2)f Fo([end)p Fp(2)p Fo(]]]]])17 b Fl(\))614 1843
y Fg(\017)83 b Fl(\(vector-sort)i Fd(<)f Fo(v)f([start)g([end]])17
b Fl(\))84 b Fg(!)f Fo(ve)-8 b(ctor)614 2042 y Fg(\017)83
b Fl(\(vector-sort!)j Fd(<)d Fo(v)g([start)g([end]])17
b Fl(\))614 2242 y Fg(\017)83 b Fl(\(vector-stable-sort)k
Fd(<)c Fo(v)g([start)g([end]])17 b Fl(\))84 b Fg(!)f
Fo(ve)-8 b(ctor)614 2441 y Fg(\017)83 b Fl(\(vector-stable-sort!)k
Fd(<)c Fo(v)g([start)g([end]])17 b Fl(\))614 2640 y Fg(\017)83
b Fl(\(vector-delete-neighbor-dups)88 b Fp(=)83 b Fo(v)h([start)f
([end]])17 b Fl(\))84 b Fg(!)f Fo(ve)-8 b(ctor)1356 3004
y Fp(Pro)5 b(cedure)1960 b(Suggested)56 b(algorithm)p
1257 3070 4378 7 v 1356 3210 a Fl(list-sort)1914 b Fp(v)-5
b(ector)55 b(heap)g(or)h(quic)-5 b(k)1356 3409 y Fl(list-sort!)1827
b Fp(list)56 b(merge)f(sort)1356 3608 y Fl(list-stable-sort)1305
b Fp(v)-5 b(ector)55 b(merge)g(sort)1356 3808 y Fl(list-stable-sort!)
1218 b Fp(list)56 b(merge)f(sort)1356 4007 y Fl(vector-sort)1740
b Fp(heap)56 b(or)f(quic)-5 b(k)55 b(sort)1356 4206 y
Fl(vector-sort!)76 b Fp(or)56 b(quic)-5 b(k)55 b(sort)1356
4405 y Fl(vector-stable-sort)1131 b Fp(v)-5 b(ector)55
b(merge)g(sort)1356 4605 y Fl(vector-stable-sort!)77
b Fp(merge)56 b(sort)581 4963 y Fl(List-Sorted?)86 b
Fp(and)59 b Fl(vector-sorted?)86 b Fp(return)58 b(true)h(if)f(their)h
(input)g(list)g(or)f(v)-5 b(ector)58 b(is)581 5162 y(in)e(sorted)f
(order,)h(as)g(determined)f(b)-5 b(y)56 b(their)f Fd(<)h
Fp(comparison)g(parameter.)830 5361 y(All)67 b(four)h(merge)g(op)5
b(erations)67 b(are)h(stable:)98 b(an)68 b(elemen)-5
b(t)67 b(of)h(the)f(initial)g(list)h Fo(list)6019 5386
y Fj(1)6162 5361 y Fp(or)581 5561 y(v)-5 b(ector)64 b
Fo(ve)-8 b(ctor)1519 5586 y Fj(1)1659 5561 y Fp(will)64
b(come)h(b)5 b(efore)63 b(an)i(equal-comparing)h(elemen)-5
b(t)64 b(in)h(the)f(second)h(list)581 5760 y Fo(list)797
5785 y Fj(2)927 5760 y Fp(or)56 b(v)-5 b(ector)54 b Fo(ve)-8
b(ctor)2059 5785 y Fj(2)2190 5760 y Fp(in)56 b(the)f(result.)830
5959 y(The)h(pro)5 b(cedures)830 6291 y Fg(\017)83 b
Fl(list-merge)830 6624 y Fg(\017)g Fl(list-sort)830 6956
y Fg(\017)g Fl(list-stable-sort)830 7288 y Fg(\017)g
Fl(list-delete-neighbor-dups)581 7621 y Fp(do)45 b(not)f(alter)f(their)
h(inputs)i(and)e(are)g(allo)-5 b(w)g(ed)46 b(to)d(return)i(a)f(v)-9
b(alue)44 b(that)f(shares)j(a)e(common)581 7820 y(tail)55
b(with)h(a)f(list)h(argumen)-5 b(t.)830 8019 y(The)56
b(pro)5 b(cedure)830 8352 y Fg(\017)83 b Fl(list-sort!)830
8684 y Fg(\017)g Fl(list-stable-sort!)581 9016 y Fp(are)57
b(\\linear)f(up)5 b(date")57 b(op)5 b(erators|they)56
b(are)g(allo)-5 b(w)g(ed,)58 b(but)f(not)f(required,)h(to)f(alter)g
(the)581 9215 y(cons)g(cells)g(of)f(their)g(argumen)-5
b(ts)57 b(to)d(pro)5 b(duce)56 b(their)f(results.)830
9415 y(On)40 b(the)f(other)g(hand,)k(the)c Fl(list-merge!)71
b Fp(pro)5 b(cedure)39 b(mak)-5 b(e)39 b(only)h(a)f(single,)k(iterativ)
-5 b(e,)581 9614 y(linear-time)64 b(pass)g(o)-5 b(v)g(er)63
b(its)g(argumen)-5 b(t)63 b(list,)j(using)g Fl(set-cdr!)p
Fp(s)f(to)d(rearrange)h(the)f(cells)581 9813 y(of)80
b(the)g(list)h(in)-5 b(to)80 b(the)g(\014nal)h(result)g(|it)f(w)-5
b(orks)81 b(\\in)g(place.")148 b(Hence,)86 b(an)-5 b(y)81
b(cons)g(cell)581 10012 y(app)5 b(earing)61 b(in)g(the)g(result)g(m)-5
b(ust)61 b(ha)-5 b(v)g(e)61 b(originally)h(app)5 b(eared)60
b(in)h(an)g(input.)91 b(The)60 b(in)-5 b(ten)g(t)3362
10511 y(57)p eop end
%%Page: 58 66
TeXDict begin 58 65 bop 1478 1046 a Fp(of)63 b(this)g(iterativ)-5
b(e-algorithm)64 b(commitmen)-5 b(t)63 b(is)h(to)f(allo)-5
b(w)64 b(the)f(programmer)h(to)f(b)5 b(e)63 b(sure)1478
1245 y(that)68 b(if,)j(for)e(example,)i Fl(list-merge!)115
b Fp(is)69 b(ask)-5 b(ed)70 b(to)e(merge)g(t)-5 b(w)g(o)69
b(ten-million-elemen)-5 b(t)1478 1445 y(lists,)56 b(the)f(op)5
b(eration)54 b(will)i(complete)f(without)g(p)5 b(erforming)55
b(some)h(extremely)e(\(p)5 b(ossibly)1478 1644 y(t)-5
b(w)g(en)g(t)g(y-million\))56 b(deep)g(recursion.)1727
1844 y(The)f(v)-5 b(ector)55 b(pro)5 b(cedures)1727 2178
y Fg(\017)83 b Fl(vector-sort)1727 2513 y Fg(\017)g Fl
(vector-stable-sort)1727 2848 y Fg(\017)g Fl
(vector-delete-neighbor-dups)1478 3182 y Fp(do)63 b(not)f(alter)g
(their)g(inputs,)k(but)d(allo)5 b(cate)61 b(a)i(fresh)g(v)-5
b(ector)62 b(for)g(their)g(result,)j(of)d(length)1478
3381 y Fo(end)54 b Fg(\000)37 b Fo(start)16 b Fp(.)1727
3581 y(The)55 b(v)-5 b(ector)55 b(pro)5 b(cedures)1727
3915 y Fg(\017)83 b Fl(vector-sort!)1727 4250 y Fg(\017)g
Fl(vector-stable-sort!)1478 4584 y Fp(sort)68 b(their)g(data)g
(in-place.)113 b(\(But)67 b(note)h(that)f Fl(vector-stable-sort!)116
b Fp(ma)-5 b(y)68 b(allo)5 b(cate)1478 4783 y(temp)g(orary)54
b(storage)i(prop)5 b(ortional)55 b(to)g(the)g(size)h(of)f(the)g(input)h
(.\))1727 4983 y Fl(Vector-merge)h Fp(returns)f(a)f(v)-5
b(ector)55 b(of)g(length)g(\()p Fo(end)5054 5008 y Fj(1)5166
4983 y Fg(\000)37 b Fo(start)5665 5008 y Fj(1)5777 4983
y Fp(+)g(\()p Fo(end)6262 5008 y Fj(2)6373 4983 y Fg(\000)g
Fo(start)6872 5008 y Fj(2)6947 4983 y Fp(\).)1727 5183
y Fl(Vector-merge!)76 b Fp(writes)55 b(its)g(result)g(in)-5
b(to)55 b(v)-5 b(ector)55 b Fo(v)18 b Fp(,)55 b(b)5 b(eginning)56
b(at)e(index)h Fo(start)16 b Fp(,)56 b(for)1478 5383
y(indices)49 b(less)g(than)f Fo(end)64 b Fp(=)46 b Fo(start)39
b Fp(+)23 b(\()p Fo(end)4031 5408 y Fj(1)4128 5383 y
Fg(\000)g Fo(start)4613 5408 y Fj(1)4688 5383 y Fp(\))g(+)g(\()p
Fo(end)5247 5408 y Fj(2)5343 5383 y Fg(\000)g Fo(start)5828
5408 y Fj(2)5902 5383 y Fp(\).)72 b(The)48 b(target)f(sub-)1478
5582 y(v)-5 b(ector)41 b Fo(v)18 b Fp([)p Fo(start)e
Fd(;)28 b Fo(end)18 b Fp(\))41 b(ma)-5 b(y)43 b(not)f(o)-5
b(v)g(erlap)42 b(either)g(source)g(sub)-5 b(v)g(ector)43
b Fo(ve)-8 b(ctor)6210 5607 y Fj(1)6285 5582 y Fp([)p
Fo(start)6664 5607 y Fj(1)6739 5582 y Fd(;)28 b Fo(end)7067
5607 y Fj(1)7142 5582 y Fp(\))1478 5781 y Fo(ve)-8 b(ctor)1908
5806 y Fj(2)1983 5781 y Fp([)p Fo(start)2362 5806 y Fj(2)2437
5781 y Fd(;)28 b Fo(end)2765 5806 y Fj(2)2840 5781 y
Fp(\).)1727 5981 y(The)50 b Fl(...-delete-neighbor-dups-...)77
b Fp(pro)5 b(cedures:)72 b(These)50 b(pro)5 b(cedures)51
b(delete)1478 6180 y(adjacen)-5 b(t)84 b(duplicate)g(elemen)-5
b(ts)84 b(from)h(a)f(list)g(or)g(a)g(v)-5 b(ector,)90
b(using)c(a)e(giv)-5 b(en)84 b(elemen)-5 b(t-)1478 6380
y(equalit)g(y)73 b(pro)5 b(cedure.)130 b(The)74 b(\014rst/leftmost)h
(elemen)-5 b(t)74 b(of)g(a)g(run)g(of)g(equal)g(elemen)-5
b(ts)75 b(is)1478 6579 y(the)55 b(one)g(that)g(surviv)-5
b(es.)75 b(The)55 b(list)h(or)f(v)-5 b(ector)55 b(is)h(not)f(otherwise)
g(disordered.)1727 6779 y(These)37 b(pro)5 b(cedures)37
b(are)g(linear)g(time|m)-5 b(uc)g(h)38 b(faster)f(than)g(the)g
Fd(O)5 b Fp(\()p Fd(n)5996 6718 y Fj(2)6069 6779 y Fp(\))36
b(general)h(duplicate-)1478 6978 y(elemen)-5 b(t)64 b(deletors)f(that)g
(do)h(not)g(assume)h(an)-5 b(y)64 b(\\bunc)-5 b(hing")65
b(of)f(elemen)-5 b(ts)64 b(\(suc)-5 b(h)64 b(as)h(the)1478
7177 y(ones)48 b(pro)-5 b(vided)47 b(b)-5 b(y)48 b(SRFI)g(1\).)71
b(If)46 b(y)-5 b(ou)48 b(w)-5 b(an)g(t)48 b(to)e(delete)h(duplicate)g
(elemen)-5 b(ts)48 b(from)f(a)g(large)1478 7377 y(list)52
b(or)g(v)-5 b(ector,)53 b(y)-5 b(ou)52 b(can)g(sort)g(the)g(elemen)-5
b(ts)53 b(to)f(bring)g(equal)g(items)h(together,)f(then)g(use)1478
7576 y(one)j(of)g(these)h(pro)5 b(cedures,)55 b(for)h(a)f(total)g(time)
g(of)g Fd(O)5 b Fp(\()p Fd(n)28 b Fp(log)q(\()p Fd(n)p
Fp(\)\).)1727 7776 y(The)64 b(comparison)i(pro)5 b(cedure)64
b(=)g(passed)h(to)f(these)g(pro)5 b(cedures)65 b(is)f(alw)-5
b(a)g(ys)66 b(applied)1478 7975 y Fl(\()p Fp(=)87 b Fd(x)g(y)6
b Fl(\))56 b Fp(where)f Fd(x)h Fp(comes)f(b)5 b(efore)55
b Fd(y)62 b Fp(in)55 b(the)g(con)-5 b(taining)57 b(list)e(or)h(v)-5
b(ector.)1727 8343 y Fg(\017)83 b Fl(List-delete-neighbor-dups)52
b Fp(do)5 b(es)49 b(not)e(alter)h(its)g(input)h(list;)i(its)d(answ)-5
b(er)49 b(ma)-5 b(y)1893 8542 y(share)56 b(storage)f(with)g(the)g
(input)h(list.)1727 8877 y Fg(\017)83 b Fl(Vector-delete-neighbor-dups)
44 b Fp(do)5 b(es)41 b(not)e(alter)h(its)g(input)g(v)-5
b(ector,)43 b(but)d(rather)1893 9076 y(allo)5 b(cates)55
b(a)g(fresh)h(v)-5 b(ector)54 b(to)h(hold)h(the)f(result.)1478
9444 y(Examples:)1478 9813 y Fl(\(list-delete-neighbor-dups)91
b(=)d('\(1)f(1)h(2)f(7)h(7)f(7)g(0)h(-2)f(-2\)\))1652
10012 y Fp(=)-27 b Fg(\))87 b Fl(\(1)g(2)h(7)f(0)g(-2\))4259
10511 y Fp(58)p eop end
%%Page: 59 67
TeXDict begin 59 66 bop 581 1245 a Fl(\(vector-delete-neighbor-dups)92
b(=)87 b('#\(1)h(1)g(2)f(7)g(7)h(7)f(0)g(-2)h(-2\)\))755
1445 y Fp(=)-27 b Fg(\))87 b Fl(#\(1)h(2)f(7)h(0)f(-2\))581
1843 y(\(vector-delete-neighbor-dups)92 b(=)87 b('#\(1)h(1)g(2)f(7)g(7)
h(7)f(0)g(-2)h(-2\))g(3)f(7\))755 2042 y Fp(=)-27 b Fg(\))87
b Fl(#\(7)h(0)f(-2\))581 2486 y Fm(Algorithm-sp)5 b(eci\014c)65
b(sorting)g(pac)-5 b(k)-11 b(ages)581 2797 y Fp(These)47
b(pac)-5 b(k)c(ages)47 b(pro)-5 b(vide)48 b(more)f(sp)5
b(eci\014c)47 b(sorting)h(functionalit)-5 b(y)-14 b(,)48
b(that)f(is,)i(sp)5 b(eci\014c)47 b(com-)581 2996 y(mittmen)-5
b(t)51 b(to)f(particular)h(algorithms)g(that)g(ha)-5
b(v)g(e)51 b(particular)f(pragmatic)h(consequences)581
3195 y(\(suc)-5 b(h)58 b(as)h(memory)e(lo)5 b(calit)-5
b(y)-14 b(,)58 b(asymptotic)g(running)g(time\))f(b)5
b(ey)-5 b(ond)58 b(their)f(seman)-5 b(tic)59 b(b)5 b(e-)581
3395 y(ha)-5 b(viour)60 b(\(sorting,)g(stable)f(sorting,)h(merging,)h
(etc.\).)84 b(Programmers)60 b(that)e(need)h(a)g(par-)581
3594 y(ticular)c(algorithm)h(can)g(use)g(one)f(of)g(these)g(pac)-5
b(k)c(ages.)581 4038 y Fl(sorted)p Fm(|sorted)65 b(predicates)614
4377 y Fg(\017)83 b Fl(\(list-sorted?)103 b Fd(<)83 b
Fo(list)16 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614
4576 y Fg(\017)83 b Fl(\(vector-sorted?)103 b Fd(<)83
b Fo(ve)-8 b(ctor)18 b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)614
4775 y Fg(\017)83 b Fl(\(vector-sorted?)103 b Fd(<)83
b Fo(ve)-8 b(ctor)84 b(start)16 b Fl(\))83 b Fg(!)g Fo(b)-8
b(o)g(ole)g(an)614 4975 y Fg(\017)83 b Fl(\(vector-sorted?)103
b Fd(<)83 b Fo(ve)-8 b(ctor)84 b(start)f(end)17 b Fl(\))84
b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)830 5314 y Fp(Return)60
b Fl(#f)f Fp(i\013)h(there)f(is)h(an)f(adjacen)-5 b(t)60
b(pair)f Fd(:)28 b(:)g(:)g(x;)g(y)34 b(:)28 b(:)g(:)59
b Fp(in)g(the)g(input)h(list)g(or)f(v)-5 b(ector)581
5513 y(suc)g(h)38 b(that)f Fd(y)52 b(<)46 b(x)p Fp(.)68
b(The)37 b(optional)g Fo(start)16 b Fp(/)p Fo(end)55
b Fp(range)37 b(argumen)-5 b(ts)38 b(restrict)e Fl(vector-sorted?)581
5712 y Fp(to)55 b(the)g(indicated)h(sub)-5 b(v)g(ector.)581
6156 y Fl(list-merge-sort)p Fm(|list)67 b(merge)c(sort)614
6495 y Fg(\017)83 b Fl(\(list-merge-sort)j Fd(<)d Fo(list)16
b Fl(\))84 b Fg(!)f Fo(list)614 6694 y Fg(\017)g Fl(\(list-merge-sort!)
103 b Fd(<)83 b Fo(list)16 b Fl(\))84 b Fg(!)f Fo(list)614
6893 y Fg(\017)g Fl(\(list-merge)i Fo(list)2038 6918
y Fj(1)2196 6893 y Fd(<)e Fo(list)2624 6918 y Fj(2)2699
6893 y Fl(\))h Fg(!)f Fo(list)614 7093 y Fg(\017)g Fl(\(list-merge!)102
b Fo(list)2142 7118 y Fj(1)2300 7093 y Fd(<)84 b Fo(list)2729
7118 y Fj(2)2803 7093 y Fl(\))g Fg(!)f Fo(list)581 7432
y Fp(The)44 b(sort)g(pro)5 b(cedures)45 b(sort)f(their)f(data)h(using)h
(a)g(list)f(merge)g(sort,)i(whic)-5 b(h)45 b(is)g(stable.)70
b(\(The)581 7631 y(reference)c(implemen)-5 b(tation)69
b(is,)h(additionally)-14 b(,)71 b(a)d(\\natural")f(sort.)110
b(See)67 b(b)5 b(elo)-5 b(w)67 b(for)g(the)581 7830 y(prop)5
b(erties)55 b(of)h(this)f(algorithm.\))830 8032 y(The)44
b Fl(!)70 b Fp(pro)5 b(cedures)44 b(are)f(destructiv)-5
b(e|they)43 b(use)h Fl(set-cdr!)p Fp(s)h(to)f(rearrange)f(the)g(cells)
581 8231 y(of)56 b(the)h(lists)g(in)-5 b(to)57 b(the)f(prop)5
b(er)57 b(order.)77 b(As)57 b(suc)-5 b(h,)58 b(they)e(do)h(not)f(allo)5
b(cate)56 b(an)-5 b(y)56 b(extra)g(cons)581 8430 y(cells|they)f(are)g
(\\in)h(place")f(sorts.)830 8632 y(The)73 b(merge)g(op)5
b(erations)73 b(are)f(stable:)109 b(an)73 b(elemen)-5
b(t)73 b(of)g Fo(list)4698 8657 y Fj(1)4846 8632 y Fp(will)g(come)f(b)5
b(efore)72 b(an)581 8831 y(equal-comparing)57 b(elemen)-5
b(t)55 b(in)h Fo(list)2855 8856 y Fj(2)2985 8831 y Fp(in)g(the)f
(result)g(list.)581 9275 y Fl(vector-merge-sort)p Fm(|v)-5
b(ector)66 b(merge)d(sort)614 9614 y Fg(\017)83 b Fl
(\(vector-merge-sort)k Fd(<)c Fo(ve)-8 b(ctor)83 b([start)g([end)h
([temp]]])17 b Fl(\))84 b Fg(!)f Fo(ve)-8 b(ctor)614
9813 y Fg(\017)83 b Fl(\(vector-merge-sort!)k Fd(<)c
Fo(ve)-8 b(ctor)84 b([start)f([end)g([temp]]])17 b Fl(\))614
10012 y Fg(\017)83 b Fl(\(vector-merge)j Fd(<)d Fo(ve)-8
b(ctor)2639 10037 y Fj(1)2797 10012 y Fo(ve)g(ctor)3227
10037 y Fj(2)3385 10012 y Fo([start)3769 10037 y Fj(1)3927
10012 y Fo([end)4232 10037 y Fj(1)4390 10012 y Fo([start)4774
10037 y Fj(2)4931 10012 y Fo([end)5236 10037 y Fj(2)5311
10012 y Fo(]]]])17 b Fl(\))84 b Fg(!)f Fo(ve)-8 b(ctor)3362
10511 y Fp(59)p eop end
%%Page: 60 68
TeXDict begin 60 67 bop 1511 1046 a Fg(\017)83 b Fl(\(vector-merge!)i
Fd(<)f Fo(ve)-8 b(ctor)83 b(ve)-8 b(ctor)4136 1071 y
Fj(1)4295 1046 y Fo(ve)g(ctor)4725 1071 y Fj(2)4883 1046
y Fo([start)83 b([start)5734 1071 y Fj(1)5891 1046 y
Fo([end)6196 1071 y Fj(1)6354 1046 y Fo([start)6738 1071
y Fj(2)6896 1046 y Fo([end)7201 1071 y Fj(2)7276 1046
y Fo(]]]]])17 b Fl(\))1478 1372 y Fp(The)71 b(sort)g(pro)5
b(cedures)71 b(sort)h(their)f(data)f(using)j(v)-5 b(ector)70
b(merge)h(sort,)k(whic)-5 b(h)72 b(is)g(stable.)1478
1572 y(\(The)57 b(reference)g(implemen)-5 b(tation)58
b(is,)h(additionally)-14 b(,)59 b(a)f(\\natural")g(sort.)80
b(See)58 b(b)5 b(elo)-5 b(w)58 b(for)1478 1771 y(the)d(prop)5
b(erties)55 b(of)g(this)h(algorithm.\))1727 1970 y(The)83
b(optional)g Fo(start)16 b Fp(/)p Fo(end)100 b Fp(argumen)-5
b(ts)84 b(pro)-5 b(vide)84 b(for)e(sorting)i(of)e(subranges,)92
b(and)1478 2169 y(default)55 b(to)g(0)g(and)h(the)f(length)g(of)g(the)g
(corresp)5 b(onding)57 b(v)-5 b(ector.)1727 2369 y(Merge-sorting)45
b(a)f(v)-5 b(ector)43 b(requires)h(the)g(allo)5 b(cation)44
b(of)f(a)h(temp)5 b(orary)44 b(\\scratc)-5 b(h")44 b(w)-5
b(ork)1478 2568 y(v)g(ector)53 b(for)h(the)g(duration)h(of)f(the)f
(sort.)74 b(This)55 b(scratc)-5 b(h)55 b(v)-5 b(ector)53
b(can)h(b)5 b(e)54 b(passed)i(in)e(b)-5 b(y)55 b(the)1478
2767 y(clien)-5 b(t)56 b(as)g(the)g(optional)g Fo(temp)67
b Fp(argumen)-5 b(t;)57 b(if)f(so,)h(the)f(supplied)h(v)-5
b(ector)56 b(m)-5 b(ust)57 b(b)5 b(e)55 b(of)h(size)1478
2966 y Fg(\024)64 b Fo(end)18 b Fp(,)69 b(and)d(will)h(not)f(b)5
b(e)66 b(altered)f(outside)i(the)f(range)g([start,end\).)106
b(If)66 b(not)g(supplied,)1478 3166 y(the)55 b(sort)g(routines)h(allo)5
b(cate)55 b(one)g(themselv)-5 b(es.)1727 3365 y(The)56
b(merge)g(op)5 b(erations)57 b(are)f(stable:)76 b(an)57
b(elemen)-5 b(t)56 b(of)g Fo(ve)-8 b(ctor)5660 3390 y
Fj(1)5792 3365 y Fp(will)56 b(come)g(b)5 b(efore)56 b(an)1478
3564 y(equal-comparing)g(elemen)-5 b(t)56 b(in)f Fo(ve)-8
b(ctor)3965 3589 y Fj(2)4096 3564 y Fp(in)56 b(the)f(result)g(v)-5
b(ector.)1727 3922 y Fg(\017)83 b Fl(Vector-merge-sort!)77
b Fp(lea)-5 b(v)g(es)56 b(its)f(result)h(in)g Fo(ve)-8
b(ctor)18 b Fp([)p Fo(start)e Fd(;)28 b Fo(end)18 b Fp(\).)1727
4252 y Fg(\017)83 b Fl(Vector-merge-sort)58 b Fp(returns)e(a)f(v)-5
b(ector)55 b(of)g(length)g Fo(end)g Fg(\000)37 b Fo(start)16
b Fp(.)1727 4581 y Fg(\017)83 b Fl(Vector-merge)53 b
Fp(returns)e(a)g(v)-5 b(ector)50 b(of)g(length)h(\()p
Fo(end)5193 4606 y Fj(1)5296 4581 y Fg(\000)28 b Fo(start)5786
4606 y Fj(1)5860 4581 y Fp(\))g(+)g(\()p Fo(end)6429
4606 y Fj(2)6531 4581 y Fg(\000)g Fo(start)7021 4606
y Fj(2)7096 4581 y Fp(\).)1727 4910 y Fg(\017)83 b Fl(Vector-merge!)75
b Fp(writes)52 b(its)h(result)g(in)-5 b(to)53 b Fo(ve)-8
b(ctor)18 b Fp(,)54 b(b)5 b(eginning)53 b(at)f(index)g
Fo(start)16 b Fp(,)54 b(for)1893 5109 y(indices)46 b(less)g(than)f
Fo(end)64 b Fp(=)47 b Fo(start)32 b Fp(+)17 b(\()p Fo(end)4425
5134 y Fj(1)4516 5109 y Fg(\000)g Fo(start)4995 5134
y Fj(1)5069 5109 y Fp(\))g(+)g(\()p Fo(end)5616 5134
y Fj(2)5707 5109 y Fg(\000)g Fo(start)6186 5134 y Fj(2)6260
5109 y Fp(\).)70 b(The)45 b(target)1893 5308 y(sub)-5
b(v)g(ector)3923 5508 y Fo(ve)d(ctor)18 b Fp([)p Fo(start)e
Fd(;)28 b Fo(end)18 b Fp(\))1893 5802 y(ma)-5 b(y)56
b(not)f(o)-5 b(v)g(erlap)56 b(either)f(source)h(sub)-5
b(v)g(ector)2934 6160 y Fo(ve)d(ctor)3364 6185 y Fj(1)3439
6160 y Fp([)p Fo(start)3818 6185 y Fj(1)3893 6160 y Fd(;)28
b Fo(end)4221 6185 y Fj(1)4296 6160 y Fp(\))p Fd(;)82
b Fp(or)56 b Fo(ve)-8 b(ctor)5123 6185 y Fj(2)5198 6160
y Fp([)p Fo(start)5577 6185 y Fj(2)5652 6160 y Fd(;)28
b Fo(end)5980 6185 y Fj(2)6055 6160 y Fp(\))p Fd(:)1478
6583 y Fl(vector-heap-sort)p Fm(|v)-5 b(ector)65 b(heap)f(sort)1511
6910 y Fg(\017)83 b Fl(\(vector-heap-sort)j Fd(<)d Fo(ve)-8
b(ctor)84 b([start)f([end]])17 b Fl(\))84 b Fg(!)f Fo(ve)-8
b(ctor)1511 7109 y Fg(\017)83 b Fl(\(vector-heap-sort!)j
Fd(<)d Fo(ve)-8 b(ctor)84 b([start)f([end]])17 b Fl(\))1478
7435 y Fp(These)58 b(pro)5 b(cedures)59 b(sort)f(their)g(data)f(using)j
(heap)e(sort,)h(whic)-5 b(h)59 b(is)f(not)g(a)g(stable)h(sorting)1478
7635 y(algorithm.)1727 7834 y Fl(Vector-heap-sort)40
b Fp(returns)d(a)g(v)-5 b(ector)36 b(of)h(length)f Fo(end)18
b Fg(\000)p Fo(start)e Fp(.)68 b Fl(Vector-heap-sort!)1478
8033 y Fp(is)56 b(in-place,)g(lea)-5 b(ving)56 b(its)f(result)h(in)g
Fo(ve)-8 b(ctor)18 b Fp([)p Fo(start)e Fd(;)28 b Fo(end)18
b Fp(\).)1478 8463 y Fl(vector-insert-sort)p Fm(|v)-5
b(ector)66 b(insertion)e(sort)1511 8790 y Fg(\017)83
b Fl(\(vector-insert-sort)j Fd(<)e Fo(ve)-8 b(ctor)83
b([start)g([end]])17 b Fl(\))84 b Fg(!)f Fo(ve)-8 b(ctor)1511
8989 y Fg(\017)83 b Fl(\(vector-insert-sort!)k Fd(<)c
Fo(ve)-8 b(ctor)83 b([start)g([end]])17 b Fl(\))1478
9315 y Fp(These)55 b(pro)5 b(cedures)56 b(stably)g(sort)f(their)g(data)
g(using)i(insertion)f(sort.)1727 9642 y Fg(\017)83 b
Fl(Vector-insert-sort)58 b Fp(returns)e(a)f(v)-5 b(ector)55
b(of)g(length)h Fo(end)e Fg(\000)37 b Fo(start)16 b Fp(.)1727
9971 y Fg(\017)83 b Fl(Vector-insert-sort!)77 b Fp(is)56
b(in-place,)g(lea)-5 b(ving)56 b(its)f(result)h(in)g
Fo(ve)-8 b(ctor)18 b Fp([)p Fo(start)e Fd(;)28 b Fo(end)18
b Fp(\).)4259 10511 y(60)p eop end
%%Page: 61 69
TeXDict begin 61 68 bop 581 1046 a Fl(delete-neighbor-duplicates)p
Fm(|list)102 b(and)96 b(v)-5 b(ector)96 b(delete)f(neigh)-5
b(b)5 b(or)97 b(dupli-)581 1245 y(cates)614 1574 y Fg(\017)83
b Fl(\(list-delete-neighbor-dups)88 b Fp(=)83 b Fo(list)16
b Fl(\))83 b Fg(!)g Fo(list)614 1773 y Fg(\017)g Fl
(\(list-delete-neighbor-dups!)105 b Fp(=)83 b Fo(list)16
b Fl(\))84 b Fg(!)f Fo(list)614 1972 y Fg(\017)g Fl
(\(vector-delete-neighbor-dups)88 b Fp(=)83 b Fo(ve)-8
b(ctor)84 b([start)f([end]])17 b Fl(\))84 b Fg(!)f Fo(ve)-8
b(ctor)614 2172 y Fg(\017)83 b Fl(\(vector-delete-neighbor-dups!)105
b Fp(=)84 b Fo(ve)-8 b(ctor)83 b([start)g([end]])17 b
Fl(\))84 b Fg(!)f Fo(end)5699 2111 y Fe(0)581 2500 y
Fp(These)77 b(pro)5 b(cedures)76 b(delete)g(adjacen)-5
b(t)76 b(duplicate)g(elemen)-5 b(ts)77 b(from)f(a)g(list)h(or)f(a)g(v)
-5 b(ector,)581 2699 y(using)48 b(a)f(giv)-5 b(en)47
b(elemen)-5 b(t-equalit)g(y)47 b(pro)5 b(cedure)47 b(=.)71
b(The)47 b(\014rst/leftmost)g(elemen)-5 b(t)47 b(of)f(a)h(run)581
2899 y(of)64 b(equal)g(elemen)-5 b(ts)64 b(is)h(the)f(one)g(that)f
(surviv)-5 b(es.)101 b(The)64 b(list)h(or)f(v)-5 b(ector)63
b(is)i(not)f(otherwise)581 3098 y(disordered.)830 3297
y(These)37 b(pro)5 b(cedures)38 b(are)e(linear)i(time|m)-5
b(uc)g(h)38 b(faster)e(than)h(the)g Fd(O)5 b Fp(\()p
Fd(n)5099 3237 y Fj(2)5172 3297 y Fp(\))36 b(general)h(duplicate-)581
3496 y(elemen)-5 b(t)64 b(deletors)g(that)f(do)h(not)f(assume)i(an)-5
b(y)64 b(\\bunc)-5 b(hing")66 b(of)d(elemen)-5 b(ts)64
b(\(suc)-5 b(h)65 b(as)f(the)581 3696 y(ones)48 b(pro)-5
b(vided)48 b(b)-5 b(y)47 b(SRFI)h(1\).)71 b(If)47 b(y)-5
b(ou)47 b(w)-5 b(an)g(t)48 b(to)f(delete)f(duplicate)h(elemen)-5
b(ts)48 b(from)g(a)f(large)581 3895 y(list)53 b(or)f(v)-5
b(ector,)52 b(y)-5 b(ou)52 b(can)h(sort)f(the)g(elemen)-5
b(ts)52 b(to)g(bring)h(equal)f(items)g(together,)g(then)g(use)581
4094 y(one)k(of)f(these)g(pro)5 b(cedures,)56 b(for)f(a)g(total)g(time)
g(of)g Fd(O)5 b Fp(\()p Fd(n)28 b Fp(log)q(\()p Fd(n)p
Fp(\)\).)830 4293 y(The)56 b(comparison)g(pro)5 b(cedure)55
b(=)h(passed)h(to)e(these)g(pro)5 b(cedures)55 b(is)h(alw)-5
b(a)g(ys)57 b(applied)581 4654 y Fl(\()p Fp(=)88 b Fd(x)f(y)6
b Fl(\))830 5015 y Fp(where)55 b Fd(x)h Fp(comes)f(b)5
b(efore)55 b Fd(y)62 b Fp(in)55 b(the)g(con)-5 b(taining)57
b(list)e(or)h(v)-5 b(ector.)830 5343 y Fg(\017)83 b Fl
(List-delete-neighbor-dups)53 b Fp(do)5 b(es)48 b(not)g(alter)f(its)i
(input)f(list;)j(its)d(answ)-5 b(er)49 b(ma)-5 b(y)996
5543 y(share)56 b(storage)g(with)f(the)g(input)g(list.)830
5873 y Fg(\017)83 b Fl(Vector-delete-neighbor-dups)45
b Fp(do)5 b(es)40 b(not)g(alter)f(its)h(input)h(v)-5
b(ector,)42 b(but)e(rather)996 6072 y(allo)5 b(cates)55
b(a)h(fresh)f(v)-5 b(ector)55 b(to)g(hold)h(the)f(result.)830
6403 y Fg(\017)83 b Fl(List-delete-neighbor-dups!)77
b Fp(is)52 b(p)5 b(ermitted,)52 b(but)g(not)f(required,)i(to)e(m)-5
b(utate)996 6602 y(its)56 b(input)g(list)f(in)h(order)f(to)g(construct)
h(its)f(answ)-5 b(er.)830 6932 y Fg(\017)83 b Fl
(Vector-delete-neighbor-dups!)93 b Fp(reuses)61 b(its)f(input)g(v)-5
b(ector)59 b(to)h(hold)g(the)g(an-)996 7131 y(sw)-5 b(er,)67
b(pac)-5 b(king)64 b(its)g(answ)-5 b(er)64 b(in)-5 b(to)64
b(the)f(index)h(range)g([)p Fo(start)16 b Fd(;)28 b Fo(end)5122
7071 y Fe(0)5169 7131 y Fp(\),)65 b(where)e Fo(end)6087
7071 y Fe(0)6198 7131 y Fp(is)996 7331 y(the)52 b(non-negativ)-5
b(e)54 b(exact)d(in)-5 b(teger)52 b(returned)h(as)g(its)g(v)-9
b(alue.)72 b(It)53 b(returns)g Fo(end)5833 7270 y Fe(0)5932
7331 y Fp(as)g(its)996 7530 y(result.)74 b(The)56 b(v)-5
b(ector)54 b(is)i(not)g(altered)e(outside)i(the)f(range)h([)p
Fo(start)16 b Fd(;)28 b Fo(end)5414 7470 y Fe(0)5461
7530 y Fp(\).)581 7858 y(Examples:)581 8219 y Fl
(\(list-delete-neighbor-dups)92 b(=)87 b('\(1)h(1)f(2)h(7)f(7)g(7)h(0)f
(-2)g(-2\)\))755 8418 y Fp(=)-27 b Fg(\))87 b Fl(\(1)h(2)f(7)g(0)h
(-2\))581 8817 y(\(vector-delete-neighbor-dups)k(=)87
b('#\(1)h(1)g(2)f(7)g(7)h(7)f(0)g(-2)h(-2\)\))755 9016
y Fp(=)-27 b Fg(\))87 b Fl(#\(1)h(2)f(7)h(0)f(-2\))581
9415 y(\(vector-delete-neighbor-dups)92 b(=)87 b('#\(1)h(1)g(2)f(7)g(7)
h(7)f(0)g(-2)h(-2\))g(3)f(7\))755 9614 y Fp(=)-27 b Fg(\))87
b Fl(#\(7)h(0)f(-2\))581 10012 y(;;)h(Result)g(left)g(in)f(v[3,9\):)
3362 10511 y Fp(61)p eop end
%%Page: 62 70
TeXDict begin 62 69 bop 1478 1046 a Fl(\(let)88 b(\(\(v)f(\(vector)i(0)
e(0)g(0)h(1)f(1)g(2)h(2)f(3)g(3)h(4)f(4)h(5)f(5)g(6)h(6\)\)\))1652
1245 y(\(cons)g(\(vector-delete-neighbor-dups!)k(=)c(v)f(3\))2175
1445 y(v\)\))1739 1644 y Fp(=)-27 b Fg(\))87 b Fl(\(9)h(.)f(#\(0)h(0)f
(0)g(1)h(2)f(3)g(4)h(5)f(6)g(4)h(4)f(5)g(5)h(6)f(6\)\))1478
2071 y(binary-searches)p Fm(|v)-5 b(ector)65 b(binary)e(searc)-5
b(h)1511 2380 y Fg(\017)83 b Fl(\(vector-binary-search)k
Fd(<)c Fo(elt-)p Fd(>)p Fo(key)i(key)e(ve)-8 b(ctor)84
b([start)f([end]])17 b Fl(\))84 b Fg(!)f Fo(inte)-8 b(ger)84
b(or)f Fl(#f)1511 2579 y Fg(\017)g Fl(\(vector-binary-search3)k
Fo(c)-8 b(omp)g(ar)g(e-pr)g(o)g(c)81 b(ve)-8 b(ctor)84
b([start)f([end]])17 b Fl(\))84 b Fg(!)f Fo(inte)-8 b(ger)84
b(or)f Fl(#f)1727 2889 y(vector-binary-search)56 b Fp(searc)-5
b(hes)55 b Fo(ve)-8 b(ctor)71 b Fp(in)54 b(range)f([)p
Fo(start)16 b Fd(;)28 b Fo(end)17 b Fp(\))53 b(\(whic)-5
b(h)54 b(default)1478 3088 y(to)74 b(0)h(and)g(the)g(length)g(of)f
Fo(ve)-8 b(ctor)19 b Fp(,)80 b(resp)5 b(ectiv)-5 b(ely\))73
b(for)i(an)g(elemen)-5 b(t)75 b(whose)g(asso)5 b(ciated)1478
3287 y(k)-5 b(ey)62 b(is)i(equal)f(to)g Fo(key)15 b Fp(.)97
b(The)64 b(pro)5 b(cedure)63 b Fo(elt-)p Fd(>)p Fo(key)79
b Fp(is)64 b(used)g(to)f(map)h(an)f(elemen)-5 b(t)63
b(to)g(its)1478 3487 y(asso)5 b(ciated)53 b(k)-5 b(ey)-14
b(.)73 b(The)54 b(elemen)-5 b(ts)54 b(of)f(the)g(v)-5
b(ector)53 b(are)g(assumed)i(to)f(b)5 b(e)53 b(ordered)g(b)-5
b(y)54 b(the)f Fd(<)1478 3686 y Fp(relation)i(on)h(these)f(k)-5
b(eys.)74 b(That)55 b(is,)1478 4023 y Fl(\(vector-sorted?)90
b(\(lambda)e(\(x)f(y\))h(\()p Fd(<)f Fl(\()p Fo(elt-)p
Fd(>)p Fo(key)104 b Fl(x\))88 b(\()p Fo(elt-)p Fd(>)p
Fo(key)104 b Fl(y\)\)\))2873 4222 y Fo(ve)-8 b(ctor)105
b(start)e(end)18 b Fl(\))87 b Fp(=)-27 b Fg(\))87 b Fl(true)1727
4559 y Fp(An)49 b(elemen)-5 b(t)49 b Fo(e)62 b Fp(of)49
b Fo(ve)-8 b(ctor)68 b Fp(is)49 b(a)g(matc)-5 b(h)50
b(for)f Fo(key)64 b Fp(if)49 b(it's)g(neither)g(less)h(nor)g(greater)e
(than)1478 4759 y(the)55 b(k)-5 b(ey:)1478 5096 y Fl(\(and)88
b(\(not)g(\()p Fd(<)f Fl(\()p Fo(elt-)p Fd(>)p Fo(key)104
b(e)13 b Fl(\))87 b Fo(key)15 b Fl(\)\))1914 5295 y(\(not)88
b(\()p Fd(<)f Fo(key)102 b Fl(\()p Fo(elt-)p Fd(>)p Fo(key)i(e)13
b Fl(\)\)\)\))1727 5632 y Fp(If)56 b(there)h(is)g(suc)-5
b(h)58 b(an)f(elemen)-5 b(t,)57 b(the)g(pro)5 b(cedure)56
b(returns)h(its)g(index)g(in)g(the)g(v)-5 b(ector)56
b(as)1478 5831 y(an)42 b(exact)e(in)-5 b(teger.)69 b(If)42
b(there)f(is)h(no)g(suc)-5 b(h)42 b(elemen)-5 b(t)42
b(in)g(the)f(searc)-5 b(hed)43 b(range,)h(the)d(pro)5
b(cedure)1478 6031 y(returns)56 b(false.)1478 6368 y
Fl(\(vector-binary-search)91 b(<)c(car)h(4)f('#\(\(1)h(.)f(one\))h(\(3)
g(.)f(three\))4354 6567 y(\(4)h(.)f(four\))h(\(25)g(.)f
(twenty-five\)\)\))1478 6766 y Fp(=)-28 b Fg(\))87 b
Fl(2)1478 7165 y(\(vector-binary-search)k(<)c(car)h(7)f('#\(\(1)h(.)f
(one\))h(\(3)g(.)f(three\))4354 7364 y(\(4)h(.)f(four\))h(\(25)g(.)f
(twenty-five\)\)\))1478 7563 y Fp(=)-28 b Fg(\))87 b
Fl(#f)1727 7900 y(Vector-binary-search3)52 b Fp(is)d(a)g(v)-9
b(arian)k(t)48 b(that)h(uses)g(a)g(three-w)-5 b(a)g(y)49
b(comparison)h(pro-)1478 8100 y(cedure)59 b Fo(c)-8 b(omp)g(ar)g(e-pr)g
(o)g(c)7 b Fp(.)85 b Fo(Comp)-8 b(ar)g(e-pr)g(o)g(c)66
b Fp(compares)60 b(its)f(parameter)g(to)f(the)h(searc)-5
b(h)60 b(k)-5 b(ey)-14 b(,)1478 8299 y(and)57 b(returns)g(an)g(exact)e
(in)-5 b(teger)57 b(whose)g(sign)g(indicates)g(its)g(relationship)g(to)
f(the)h(searc)-5 b(h)1478 8498 y(k)g(ey)-14 b(.)2550
8687 y(\()p Fo(c)-8 b(omp)g(ar)g(e-pr)g(o)g(c)62 b Fd(x)p
Fp(\))166 b Fd(<)g Fp(0)g Fg(\))g Fd(x)g(<)g Fo(se)-8
b(ar)g(ch-key)2550 8886 y Fp(\()p Fo(c)g(omp)g(ar)g(e-pr)g(o)g(c)62
b Fd(x)p Fp(\))166 b(=)g(0)g Fg(\))g Fd(x)g Fp(=)g Fo(se)-8
b(ar)g(ch-key)2550 9085 y Fp(\()p Fo(c)g(omp)g(ar)g(e-pr)g(o)g(c)62
b Fd(x)p Fp(\))166 b Fd(>)g Fp(0)g Fg(\))g Fd(x)g(>)g
Fo(se)-8 b(ar)g(ch-key)1478 9415 y Fl(\(vector-binary-search3)91
b(\(lambda)d(\(elt\))g(\(-)g(\(car)g(elt\))f(4\)\))3483
9614 y('#\(\(1)h(.)f(one\))h(\(3)g(.)f(three\))3744 9813
y(\(4)h(.)f(four\))h(\(25)g(.)f(twenty-five\)\)\))1478
10012 y Fp(=)-28 b Fg(\))87 b Fl(2)4259 10511 y Fp(62)p
eop end
%%Page: 63 71
TeXDict begin 63 70 bop 581 1046 a Fc(5.19.3)225 b(Algorithmic)75
b(prop)6 b(erties)581 1360 y Fp(Di\013eren)-5 b(t)52
b(sort)h(and)g(merge)f(algorithms)h(ha)-5 b(v)g(e)53
b(di\013eren)-5 b(t)53 b(prop)5 b(erties.)73 b(Cho)5
b(ose)52 b(the)g(algo-)581 1559 y(rithm)k(that)f(matc)-5
b(hes)56 b(y)-5 b(our)55 b(needs:)581 1941 y Fm(V)-16
b(ector)64 b(insert)g(sort)83 b Fp(Stable,)56 b(but)f(only)h(suitable)f
(for)h(small)g(v)-5 b(ectors|)p Fd(O)5 b Fp(\()p Fd(n)5641
1880 y Fj(2)5714 1941 y Fp(\).)581 2289 y Fm(V)-16 b(ector)64
b(heap)f(sort)84 b Fp(Not)42 b(stable.)70 b(Guaran)-5
b(teed)44 b(fast|)p Fd(O)5 b Fp(\()p Fd(n)28 b Fp(log)q(\()p
Fd(n)p Fp(\)\))41 b Fo(worst)60 b Fp(case.)70 b(P)-5
b(o)5 b(or)996 2488 y(lo)g(calit)-5 b(y)55 b(on)h(large)f(v)-5
b(ectors.)74 b(A)55 b(v)-5 b(ery)54 b(reliable)i(w)-5
b(orkhorse.)581 2836 y Fm(V)-16 b(ector)64 b(merge)f(sort)84
b Fp(Stable.)68 b(Not)36 b(in-place|requires)i(a)g(temp)5
b(orary)36 b(bu\013er)i(of)f(equal)996 3035 y(size.)74
b(F)-14 b(ast|)p Fd(O)5 b Fp(\()p Fd(n)28 b Fp(log)r(\()p
Fd(n)p Fp(\)\)|and)53 b(has)j(go)5 b(o)g(d)54 b(memory)h(lo)5
b(calit)-5 b(y)54 b(for)h(large)g(v)-5 b(ectors.)996
3309 y(The)45 b(implemen)-5 b(tation)47 b(of)e(v)-5 b(ector)44
b(merge)h(sort)h(pro)-5 b(vided)46 b(b)-5 b(y)45 b(this)h(implemen)-5
b(tation)996 3508 y(is,)66 b(additionally)-14 b(,)67
b(a)c(\\natural")h(sort,)h(meaning)g(that)e(it)g(exploits)g(existing)h
(order)996 3708 y(in)56 b(the)f(input)h(data,)f(pro)-5
b(viding)57 b Fd(O)5 b Fp(\()p Fd(n)p Fp(\))53 b(b)5
b(est)55 b(case.)581 4056 y Fm(Destructiv)-5 b(e)63 b(list)i(merge)d
(sort)84 b Fp(Stable,)58 b(fast)g(and)g(in-place)g(\(i.e.,)g(allo)5
b(cates)57 b(no)h(new)996 4255 y(cons)47 b(cells\).)71
b(\\F)-14 b(ast")46 b(means)h Fd(O)5 b Fp(\()p Fd(n)28
b Fp(log)q(\()p Fd(n)p Fp(\)\))44 b(w)-5 b(orse-case,)49
b(and)e(substan)-5 b(tially)47 b(b)5 b(etter)996 4454
y(if)57 b(the)g(data)g(is)g(already)g(mostly)g(ordered,)h(all)f(the)g
(w)-5 b(a)g(y)57 b(do)-5 b(wn)58 b(to)f(linear)g(time)g(for)996
4653 y(a)f(completely-ordered)f(input)h(list)f(\(i.e.,)h(it)f(is)h(a)f
(\\natural")h(sort\).)996 4927 y(Note)64 b(that)g(sorting)h(lists)g(in)
-5 b(v)g(olv)g(es)66 b(c)-5 b(hasing)66 b(p)5 b(oin)-5
b(ters)65 b(through)g(memory)-14 b(,)67 b(whic)-5 b(h)996
5126 y(can)46 b(b)5 b(e)45 b(a)g(loser)h(on)f(mo)5 b(dern)46
b(mac)-5 b(hine)46 b(arc)-5 b(hitectures)46 b(b)5 b(ecause)45
b(of)g(p)5 b(o)g(or)45 b(cac)-5 b(he)45 b(and)996 5326
y(page)56 b(lo)5 b(calit)-5 b(y)-14 b(.)73 b(Sorting)56
b(v)-5 b(ectors)55 b(has)h(inheren)-5 b(tly)56 b(b)5
b(etter)54 b(lo)5 b(calit)-5 b(y)-14 b(.)996 5599 y(This)53
b(implemen)-5 b(tation's)54 b(destructiv)-5 b(e)52 b(list)h(merge)f
(and)h(merge)f(sort)g(implemen)-5 b(ta-)996 5799 y(tions)47
b(are)f(opp)5 b(ortunistic|they)46 b(a)-5 b(v)g(oid)47
b(redundan)-5 b(t)48 b Fl(set-cdr!)p Fp(s,)i(and)d(try)e(to)h(tak)-5
b(e)996 5998 y(long)56 b(already-ordered)g(runs)g(of)f(list)h
(structure)f(as-is)i(when)e(doing)h(the)f(merges.)581
6346 y Fm(Pure)63 b(list)h(merge)f(sort)84 b Fp(Stable)67
b(and)i(fast|)p Fd(O)5 b Fp(\()p Fd(n)28 b Fp(log\()p
Fd(n)p Fp(\)\))66 b(w)-5 b(orst-case,)72 b(and)d(p)5
b(ossibly)996 6545 y Fd(O)g Fp(\()p Fd(n)p Fp(\),)54
b(dep)5 b(ending)56 b(up)5 b(on)55 b(the)g(input)h(list)g(\(see)f
(discussion)j(ab)5 b(o)-5 b(v)g(e\).)1129 6925 y(Algorithm)416
b(Stable?)200 b(W)-14 b(orst)55 b(case)244 b(Av)-5 b(erage)55
b(case)199 b(In-place)p 1029 6991 4833 7 v 1129 7131
a(V)-14 b(ector)54 b(insert)226 b(Y)-14 b(es)480 b Fd(O)5
b Fp(\()p Fd(n)3315 7071 y Fj(2)3388 7131 y Fp(\))595
b Fd(O)5 b Fp(\()p Fd(n)4345 7071 y Fj(2)4418 7131 y
Fp(\))702 b(Y)-14 b(es)1129 7330 y(V)g(ector)54 b(quic)-5
b(k)250 b(No)522 b Fd(O)5 b Fp(\()p Fd(n)3315 7270 y
Fj(2)3388 7330 y Fp(\))595 b Fd(O)5 b Fp(\()p Fd(n)28
b Fp(log)q(\()p Fd(n)p Fp(\)\))304 b(Y)-14 b(es)1129
7529 y(V)g(ector)54 b(heap)292 b(No)522 b Fd(O)5 b Fp(\()p
Fd(n)28 b Fp(log)q(\()p Fd(n)p Fp(\)\))197 b Fd(O)5 b
Fp(\()p Fd(n)28 b Fp(log)q(\()p Fd(n)p Fp(\)\))304 b(Y)-14
b(es)1129 7729 y(V)g(ector)54 b(merge)199 b(Y)-14 b(es)480
b Fd(O)5 b Fp(\()p Fd(n)28 b Fp(log)q(\()p Fd(n)p Fp(\)\))197
b Fd(O)5 b Fp(\()p Fd(n)28 b Fp(log)q(\()p Fd(n)p Fp(\)\))304
b(No)1129 7928 y(List)55 b(merge)390 b(Y)-14 b(es)480
b Fd(O)5 b Fp(\()p Fd(n)28 b Fp(log)q(\()p Fd(n)p Fp(\)\))197
b Fd(O)5 b Fp(\()p Fd(n)28 b Fp(log)q(\()p Fd(n)p Fp(\)\))304
b(Either)581 8442 y Fi(5.20)270 b(Regular)90 b(expressions)581
8813 y Fp(This)46 b(section)f(describ)5 b(es)46 b(a)f(functional)h(in)
-5 b(terface)45 b(for)g(building)h(regular)g(expressions)g(and)581
9012 y(matc)-5 b(hing)54 b(them)e(against)i(strings.)74
b(The)52 b(matc)-5 b(hing)54 b(is)f(done)g(using)h(the)f(POSIX)f
(regular)581 9211 y(expression)k(pac)-5 b(k)c(age.)74
b(Regular)56 b(expressions)h(are)e(in)g(the)g(structure)h
Fl(regexps)p Fp(.)830 9415 y(A)i(regular)g(expression)h(is)f(either)g
(a)f(c)-5 b(haracter)58 b(set,)h(whic)-5 b(h)58 b(matc)-5
b(hes)59 b(an)-5 b(y)58 b(c)-5 b(haracter)581 9614 y(in)72
b(the)f(set,)k(or)c(a)h(comp)5 b(osite)71 b(expression)h(con)-5
b(taining)72 b(one)g(or)f(more)h(sub)5 b(expressions.)581
9813 y(A)64 b(regular)h(expression)h(can)e(b)5 b(e)64
b(matc)-5 b(hed)65 b(against)h(a)e(string)h(to)f(determine)h(success)h
(or)581 10012 y(failure,)56 b(and)g(to)f(determine)g(the)g(substrings)i
(matc)-5 b(hed)56 b(b)-5 b(y)56 b(particular)f(sub)5
b(expressions.)3362 10511 y(63)p eop end
%%Page: 64 72
TeXDict begin 64 71 bop 1511 1046 a Fg(\017)83 b Fl(\(regexp?)101
b Fo(value)12 b Fl(\))85 b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)1478
1345 y Fp(Returns)47 b Fl(#t)g Fp(if)60 b Fo(value)g
Fp(is)47 b(a)g(regular)g(expression)h(created)e(using)i(the)e
(functional)h(in)-5 b(terface)1478 1544 y(for)55 b(regular)h
(expressions,)g(and)g Fl(#f)g Fp(otherwise.)1478 2009
y Fc(5.20.1)225 b(Character)73 b(sets)1478 2316 y Fp(Character)e(sets)h
(ma)-5 b(y)72 b(b)5 b(e)71 b(de\014ned)i(using)f(a)g(list)g(of)g(c)-5
b(haracters)71 b(and)i(strings,)j(using)d(a)1478 2515
y(range)62 b(or)f(ranges)i(of)e(c)-5 b(haracters,)64
b(or)e(b)-5 b(y)62 b(using)g(set)g(op)5 b(erations)62
b(on)g(existing)g(c)-5 b(haracter)1478 2714 y(sets.)1511
3013 y Fg(\017)83 b Fl(\(set)h Fo(char)-8 b(acter-or-string)85
b(.)25 b(.)g(.)g Fl(\))102 b Fg(!)83 b Fo(char-set)1511
3212 y Fg(\017)g Fl(\(range)h Fo(low-char)g(high-char)18
b Fl(\))84 b Fg(!)f Fo(char-set)1511 3411 y Fg(\017)g
Fl(\(ranges)h Fo(low-char)g(high-char)g(.)25 b(.)g(.)g
Fl(\))103 b Fg(!)83 b Fo(char-set)1511 3611 y Fg(\017)g
Fl(\(ascii-range)i Fo(low-char)f(high-char)18 b Fl(\))84
b Fg(!)f Fo(char-set)1511 3810 y Fg(\017)g Fl(\(ascii-ranges)i
Fo(low-char)f(high-char)g(.)25 b(.)g(.)g Fl(\))103 b
Fg(!)83 b Fo(char-set)1478 4109 y Fl(Set)62 b Fp(returns)f(a)h(set)f
(that)g(con)-5 b(tains)62 b(the)f(c)-5 b(haracter)61
b(argumen)-5 b(ts)63 b(and)e(the)g(c)-5 b(haracters)62
b(in)1478 4308 y(an)-5 b(y)53 b(string)g(argumen)-5 b(ts.)74
b Fl(Range)53 b Fp(returns)g(a)g(c)-5 b(haracter)52 b(set)g(that)g(con)
-5 b(tain)53 b(all)g(c)-5 b(haracters)1478 4507 y(b)5
b(et)-5 b(w)g(een)58 b Fo(low-char)78 b Fp(and)59 b Fo(high-char)18
b Fp(,)61 b(inclusiv)-5 b(e.)85 b Fl(Ranges)60 b Fp(returns)f(a)g(set)f
(that)g(con)-5 b(tains)1478 4707 y(all)57 b(c)-5 b(haracters)58
b(in)g(the)f(giv)-5 b(en)57 b(ranges.)81 b Fl(Range)58
b Fp(and)g Fl(ranges)g Fp(use)g(the)f(ordering)h(induced)1478
4906 y(b)-5 b(y)64 b Fl(char->integer)p Fp(.)97 b Fl(Ascii-range)64
b Fp(and)f Fl(ascii-ranges)h Fp(use)f(the)e(ASCI)5 b(I)62
b(ordering.)1478 5105 y(It)77 b(is)h(an)g(error)g(for)g(a)g
Fo(high-char)96 b Fp(to)77 b(b)5 b(e)77 b(less)i(than)f(the)f
(preceding)k Fo(low-char)97 b Fp(in)78 b(the)1478 5304
y(appropriate)56 b(ordering.)1511 5603 y Fg(\017)83 b
Fl(\(negate)h Fo(char-set)16 b Fl(\))84 b Fg(!)f Fo(char-set)1511
5802 y Fg(\017)g Fl(\(intersection)i Fo(char-set)f(char-set)16
b Fl(\))84 b Fg(!)f Fo(char-set)1511 6002 y Fg(\017)g
Fl(\(union)h Fo(char-set)g(char-set)16 b Fl(\))84 b Fg(!)f
Fo(char-set)1511 6201 y Fg(\017)g Fl(\(subtract)i Fo(char-set)f
(char-set)16 b Fl(\))84 b Fg(!)f Fo(char-set)1478 6500
y Fp(These)55 b(p)5 b(erform)56 b(the)f(indicated)g(op)5
b(erations)56 b(on)f(c)-5 b(haracter)55 b(sets.)1727
6699 y(The)g(follo)-5 b(wing)56 b(c)-5 b(haracter)55
b(sets)h(are)f(prede\014ned:)1889 7203 y Fl(lower-case)375
b(\(set)88 b("abcdefghijklmnopqrstuvwxyz"\))1889 7402
y(upper-case)375 b(\(set)88 b("ABCDEFGHIJKLMNOPQRSTUVWXYZ"\))1889
7601 y(alphabetic)375 b(\(union)88 b(lower-case)h(upper-case\))1889
7801 y(numeric)636 b(\(set)88 b("0123456789"\))1889 8000
y(alphanumeric)201 b(\(union)88 b(alphabetic)h(numeric\))1889
8199 y(punctuation)288 b(\(set)88 b
("!\\"#$\045&'\(\)*+,-./:;<=>?@[\\\\]^_`{|}~"\))1889
8398 y(graphic)636 b(\(union)88 b(alphanumeric)i(punctuation\))1889
8598 y(printing)549 b(\(union)88 b(graphic)h(\(set)f(#\\space\)\))1889
8797 y(control)636 b(\(negate)88 b(printing\))1889 8996
y(blank)810 b(\(set)88 b(#\\space)g(\(ascii->char)i(9\)\))55
b Fp(;)h(9)f(is)h(tab)1889 9195 y Fl(whitespace)375 b(\(union)88
b(\(set)g(#\\space\))h(\(ascii-range)g(9)e(13\)\))1889
9395 y(hexdigit)549 b(\(set)88 b("0123456789abcdefABCDEF"\))4259
10511 y Fp(64)p eop end
%%Page: 65 73
TeXDict begin 65 72 bop 581 1046 a Fp(The)89 b(ab)5 b(o)-5
b(v)g(e)89 b(are)f(tak)-5 b(en)89 b(from)g(the)f(default)h(lo)5
b(cale)88 b(in)h(POSIX.)g(The)f(c)-5 b(haracters)89 b(in)581
1245 y Fl(whitespace)64 b Fp(are)f Fo(sp)-8 b(ac)g(e)12
b Fp(,)64 b Fo(tab)10 b Fp(,)65 b Fo(new)8 b(line)78
b Fp(\(=)62 b Fo(line)67 b(fe)-8 b(e)g(d)17 b Fp(\),)63
b Fo(vertic)-8 b(al)67 b(tab)10 b Fp(,)66 b Fo(form)f(fe)-8
b(e)g(d)17 b Fp(,)64 b(and)581 1445 y Fo(c)-8 b(arriage)60
b(r)-8 b(eturn)13 b Fp(.)581 1918 y Fc(5.20.2)225 b(Anc)-6
b(horing)614 2226 y Fg(\017)83 b Fl(\(string-start\))j
Fg(!)d Fo(r)-8 b(e)g(g-exp)614 2425 y Fg(\017)83 b Fl(\(string-end\))i
Fg(!)f Fo(r)-8 b(e)g(g-exp)581 2729 y Fl(String-start)66
b Fp(returns)e(a)f(regular)h(expression)h(that)e(matc)-5
b(hes)64 b(the)f(b)5 b(eginning)65 b(of)e(the)581 2928
y(string)56 b(b)5 b(eing)55 b(matc)-5 b(hed)56 b(against;)g(string-end)
h(returns)e(one)h(that)f(matc)-5 b(hes)56 b(the)f(end.)581
3402 y Fc(5.20.3)225 b(Comp)6 b(osite)76 b(expressions)614
3709 y Fg(\017)83 b Fl(\(sequence)i Fo(r)-8 b(e)g(g-exp)83
b(.)25 b(.)g(.)g Fl(\))103 b Fg(!)83 b Fo(r)-8 b(e)g(g-exp)614
3909 y Fg(\017)83 b Fl(\(one-of)i Fo(r)-8 b(e)g(g-exp)83
b(.)25 b(.)g(.)g Fl(\))103 b Fg(!)83 b Fo(r)-8 b(e)g(g-exp)581
4212 y Fl(Sequence)50 b Fp(matc)-5 b(hes)48 b(the)g(concatenation)g(of)
f(its)i(argumen)-5 b(ts,)50 b Fl(one-of)g Fp(matc)-5
b(hes)48 b(an)-5 b(y)49 b(one)581 4412 y(of)55 b(its)h(argumen)-5
b(ts.)614 4715 y Fg(\017)83 b Fl(\(text)h Fo(string)15
b Fl(\))84 b Fg(!)f Fo(r)-8 b(e)g(g-exp)581 5019 y Fl(Text)42
b Fp(returns)f(a)f(regular)i(expression)f(that)f(matc)-5
b(hes)42 b(the)e(c)-5 b(haracters)41 b(in)g Fo(string)15
b Fp(,)44 b(in)d(order.)614 5323 y Fg(\017)83 b Fl(\(repeat)i
Fo(r)-8 b(e)g(g-exp)10 b Fl(\))84 b Fg(!)f Fo(r)-8 b(e)g(g-exp)614
5522 y Fg(\017)83 b Fl(\(repeat)i Fo(c)-8 b(ount)83 b(r)-8
b(e)g(g-exp)10 b Fl(\))84 b Fg(!)f Fo(r)-8 b(e)g(g-exp)614
5721 y Fg(\017)83 b Fl(\(repeat)i Fo(min)e(max)f(r)-8
b(e)g(g-exp)10 b Fl(\))85 b Fg(!)e Fo(r)-8 b(e)g(g-exp)581
6025 y Fl(Repeat)49 b Fp(returns)f(a)g(regular)g(expression)h(that)e
(matc)-5 b(hes)49 b(zero)e(or)h(more)g(o)5 b(ccurences)48
b(of)f(its)581 6224 y Fo(r)-8 b(e)g(g-exp)49 b Fp(argumen)-5
b(t.)69 b(With)38 b(no)h(coun)-5 b(t)38 b(the)g(result)h(will)f(matc)-5
b(h)39 b(an)-5 b(y)39 b(n)-5 b(um)g(b)5 b(er)39 b(of)f(times)h(\()p
Fo(r)-8 b(e)g(g-)581 6424 y(exp)10 b Fp(*\).)89 b(With)60
b(a)g(single)h(coun)-5 b(t)61 b(the)e(returned)i(expression)g(will)f
(matc)-5 b(h)61 b Fo(r)-8 b(e)g(g-exp)71 b Fp(exactly)581
6623 y(that)59 b(n)-5 b(um)g(b)5 b(er)60 b(of)f(times.)85
b(The)59 b(\014nal)g(case)g(will)g(matc)-5 b(h)60 b(from)f
Fo(min)72 b Fp(to)58 b Fo(max)79 b Fp(rep)5 b(etitions,)581
6822 y(inclusiv)-5 b(e.)151 b Fo(Max)100 b Fp(ma)-5 b(y)81
b(b)5 b(e)81 b Fl(#f)p Fp(,)87 b(in)81 b(whic)-5 b(h)82
b(case)e(there)h(is)g(no)g(maxim)-5 b(um)82 b(n)-5 b(um)g(b)5
b(er)82 b(of)581 7021 y(matc)-5 b(hes.)103 b Fo(Count)80
b Fp(and)65 b Fo(min)78 b Fp(should)66 b(b)5 b(e)64 b(exact,)i
(non-negativ)-5 b(e)65 b(in)-5 b(tegers;)70 b Fo(max)84
b Fp(should)581 7221 y(either)55 b(b)5 b(e)55 b(an)h(exact)e
(non-negativ)-5 b(e)56 b(in)-5 b(teger)55 b(or)g Fl(#f)p
Fp(.)581 7694 y Fc(5.20.4)225 b(Case)75 b(sensitivit)-6
b(y)581 8004 y Fp(Regular)56 b(expressions)h(are)e(normally)h
(case-sensitiv)-5 b(e.)614 8341 y Fg(\017)83 b Fl(\(ignore-case)i
Fo(r)-8 b(e)g(g-exp)10 b Fl(\))85 b Fg(!)e Fo(r)-8 b(e)g(g-exp)614
8540 y Fg(\017)83 b Fl(\(use-case)i Fo(r)-8 b(e)g(g-exp)10
b Fl(\))84 b Fg(!)f Fo(r)-8 b(e)g(g-exp)581 8877 y Fp(The)60
b(v)-9 b(alue)59 b(returned)h(b)-5 b(y)63 b Fl(ignore-case)e
Fp(is)g(iden)-5 b(tical)60 b(its)g(argumen)-5 b(t)61
b(except)d(that)i(case)581 9076 y(will)j(b)5 b(e)62 b(ignored)i(when)f
(matc)-5 b(hing.)96 b(The)63 b(v)-9 b(alue)62 b(returned)h(b)-5
b(y)65 b Fl(use-case)f Fp(is)g(protected)581 9275 y(from)37
b(future)g(applications)h(of)49 b Fl(ignore-case)p Fp(.)70
b(The)37 b(expressions)h(returned)f(b)-5 b(y)39 b Fl(use-case)581
9475 y Fp(and)56 b Fl(ignore-case)i Fp(are)d(una\013ected)g(b)-5
b(y)56 b(later)f(uses)h(of)f(the)h(these)f(pro)5 b(cedures.)75
b(By)54 b(w)-5 b(a)g(y)581 9674 y(of)55 b(example,)h(the)f(follo)-5
b(wing)56 b(matc)-5 b(hes)56 b Fl("ab")g Fp(but)f(not)g
Fl("aB")p Fp(,)i Fl("Ab")p Fp(,)f(or)f Fl("AB")p Fp(.)581
10012 y Fl(\(text)88 b("ab"\))3362 10511 y Fp(65)p eop
end
%%Page: 66 74
TeXDict begin 66 73 bop 1478 1046 a Fp(while)1478 1365
y Fl(\(ignore-case)89 b(\(test)f("ab"\)\))1478 1684 y
Fp(matc)-5 b(hes)56 b Fl("ab")p Fp(,)g Fl("aB")p Fp(,)g
Fl("Ab")p Fp(,)g(and)g Fl("AB")g Fp(and)1478 2003 y Fl(\(ignore-case)89
b(\(sequence)g(\(text)f("a"\))3483 2202 y(\(use-case)g(\(text)h
("b"\)\)\)\))1478 2522 y Fp(matc)-5 b(hes)56 b Fl("ab")g
Fp(and)g Fl("Ab")g Fp(but)f(not)g Fl("aB")h Fp(or)g Fl("AB")p
Fp(.)1478 2984 y Fc(5.20.5)225 b(Submatc)-6 b(hes)73
b(and)g(matc)-6 b(hing)1478 3290 y Fp(A)42 b(sub)5 b(expression)44
b(within)f(a)g(larger)g(expression)h(can)e(b)5 b(e)43
b(mark)-5 b(ed)43 b(as)g(a)g(submatc)-5 b(h.)71 b(When)1478
3489 y(an)f(expression)h(is)g(matc)-5 b(hed)71 b(against)g(a)f(string,)
75 b(the)69 b(success)j(or)e(failure)g(of)g(eac)-5 b(h)71
b(sub-)1478 3689 y(matc)-5 b(h)45 b(within)g(that)f(expression)h(is)g
(rep)5 b(orted,)47 b(as)e(w)-5 b(ell)45 b(as)g(the)f(lo)5
b(cation)44 b(of)h(the)f(substring)1478 3888 y(matc)-5
b(hed)56 b(b)5 b(e)55 b(eac)-5 b(h)55 b(successful)i(submatc)-5
b(h.)1511 4174 y Fg(\017)83 b Fl(\(submatch)i Fo(key)e(r)-8
b(e)g(g-exp)10 b Fl(\))84 b Fg(!)f Fo(r)-8 b(e)g(g-exp)1511
4373 y Fg(\017)83 b Fl(\(no-submatches)i Fo(r)-8 b(e)g(g-exp)10
b Fl(\))85 b Fg(!)e Fo(r)-8 b(e)g(g-exp)1478 4659 y Fl(Submatch)71
b Fp(returns)g(a)f(regular)g(expression)h(that)e(matc)-5
b(hes)71 b(its)f(argumen)-5 b(t)71 b(and)f(causes)1478
4858 y(the)j(result)i(of)e(matc)-5 b(hing)75 b(its)f(argumen)-5
b(t)75 b(to)f(b)5 b(e)73 b(rep)5 b(orted)74 b(b)-5 b(y)74
b(the)f Fl(match)i Fp(pro)5 b(cedure.)1478 5057 y Fo(Key)87
b Fp(is)73 b(used)h(to)e(indicate)g(the)h(result)g(of)f(this)h
(particular)g(submatc)-5 b(h)74 b(in)f(the)g(alist)g(of)1478
5256 y(successful)g(submatc)-5 b(hes)74 b(returned)e(b)-5
b(y)74 b Fl(match)p Fp(.)125 b(An)-5 b(y)72 b(v)-9 b(alue)72
b(ma)-5 b(y)72 b(b)5 b(e)72 b(used)h(as)f(a)g Fo(key)15
b Fp(.)1478 5456 y Fl(No-submatches)56 b Fp(returns)e(an)h(expression)g
(iden)-5 b(tical)54 b(to)g(its)g(argumen)-5 b(t,)55 b(except)e(that)g
(all)1478 5655 y(submatc)-5 b(hes)57 b(ha)-5 b(v)g(e)56
b(b)5 b(een)55 b(elided.)1511 5941 y Fg(\017)83 b Fl(\(any-match?)102
b Fo(r)-8 b(e)g(g-exp)83 b(string)15 b Fl(\))84 b Fg(!)f
Fo(b)-8 b(o)g(ole)g(an)1511 6140 y Fg(\017)83 b Fl(\(exact-match?)102
b Fo(r)-8 b(e)g(g-exp)84 b(string)15 b Fl(\))83 b Fg(!)g
Fo(b)-8 b(o)g(ole)g(an)1511 6339 y Fg(\017)83 b Fl(\(match)h
Fo(r)-8 b(e)g(g-exp)84 b(string)15 b Fl(\))83 b Fg(!)g
Fo(match)g(or)g Fl(#f)1511 6539 y Fg(\017)g Fl(\(match-start)i
Fo(match)13 b Fl(\))83 b Fg(!)g Fo(index)1511 6738 y
Fg(\017)g Fl(\(match-end)i Fo(match)13 b Fl(\))83 b Fg(!)g
Fo(index)1511 6937 y Fg(\017)g Fl(\(match-submatches)j
Fo(match)13 b Fl(\))83 b Fg(!)g Fo(alist)1478 7223 y
Fl(Any-match?)98 b Fp(returns)64 b Fl(#t)f Fp(if)76 b
Fo(string)j Fp(matc)-5 b(hes)63 b Fo(r)-8 b(e)g(g-exp)74
b Fp(or)63 b(con)-5 b(tains)64 b(a)f(substring)i(that)1478
7422 y(do)5 b(es,)47 b(and)e Fl(#f)h Fp(otherwise.)70
b Fl(Exact-match?)i Fp(returns)46 b Fl(#t)f Fp(if)57
b Fo(string)k Fp(matc)-5 b(hes)45 b Fo(r)-8 b(e)g(g-exp)56
b Fp(and)1478 7621 y Fl(#f)f Fp(otherwise.)1727 7821
y Fl(Match)60 b Fp(returns)g Fl(#f)g Fp(if)73 b Fo(r)-8
b(e)g(g-exp)70 b Fp(do)5 b(es)60 b(not)f(matc)-5 b(h)60
b Fo(string)75 b Fp(and)60 b(a)g(matc)-5 b(h)60 b(record)f(if)h(it)1478
8020 y(do)5 b(es)65 b(matc)-5 b(h.)103 b(A)64 b(matc)-5
b(h)66 b(record)e(con)-5 b(tains)66 b(three)f(v)-9 b(alues:)93
b(the)64 b(b)5 b(eginning)66 b(and)f(end)h(of)1478 8219
y(the)50 b(substring)i(that)e(matc)-5 b(hed)51 b(the)g(pattern)f(and)h
(an)g(a-list)g(of)f(submatc)-5 b(h)52 b(k)-5 b(eys)51
b(and)g(cor-)1478 8418 y(resp)5 b(onding)52 b(matc)-5
b(h)51 b(records)g(for)g(an)-5 b(y)51 b(submatc)-5 b(hes)52
b(that)e(also)i(matc)-5 b(hed.)72 b Fl(Match-start)1478
8618 y Fp(returns)43 b(the)f(index)g(of)h(the)f(\014rst)g(c)-5
b(haracter)43 b(in)f(the)h(matc)-5 b(hing)43 b(substring)h(and)f
Fl(match-end)1478 8817 y Fp(giv)-5 b(es)37 b(index)g(of)g(the)f
(\014rst)i(c)-5 b(haracter)36 b(after)g(the)h(matc)-5
b(hing)37 b(substring.)70 b Fl(Match-submatches)1478
9016 y Fp(returns)43 b(an)g(alist)g(of)g(submatc)-5 b(h)44
b(k)-5 b(eys)43 b(and)g(matc)-5 b(h)43 b(records.)70
b(Only)43 b(the)g(top)f(matc)-5 b(h)43 b(record)1478
9215 y(returned)55 b(b)-5 b(y)58 b Fl(match)e Fp(has)g(a)g(submatc)-5
b(h)56 b(alist.)1727 9415 y(Matc)-5 b(hing)61 b(o)5 b(ccurs)61
b(according)g(to)f(POSIX.)h(The)f(matc)-5 b(h)61 b(returned)g(is)g(the)
g(one)f(with)1478 9614 y(the)i(lo)-5 b(w)g(est)63 b(starting)g(index)f
(in)h Fo(string)15 b Fp(.)95 b(If)63 b(there)f(is)h(more)f(than)h(one)f
(suc)-5 b(h)64 b(matc)-5 b(h,)65 b(the)1478 9813 y(longest)76
b(is)g(returned.)134 b(Within)75 b(that)g(matc)-5 b(h)76
b(the)f(longest)h(p)5 b(ossible)76 b(submatc)-5 b(hes)77
b(are)1478 10012 y(returned.)4259 10511 y(66)p eop end
%%Page: 67 75
TeXDict begin 67 74 bop 830 1046 a Fp(All)61 b(three)f(matc)-5
b(hing)61 b(pro)5 b(cedures)61 b(cac)-5 b(he)61 b(a)f(compiled)i(v)-5
b(ersion)61 b(of)74 b Fo(r)-8 b(e)g(g-exp)10 b Fp(.)90
b(Subse-)581 1245 y(quen)-5 b(t)55 b(calls)h(with)g(the)e(same)j
Fo(r)-8 b(e)g(g-exp)66 b Fp(will)55 b(b)5 b(e)55 b(more)h(e\016cien)-5
b(t.)830 1449 y(The)68 b(C)f(in)-5 b(terface)67 b(to)g(the)g(POSIX)g
(regular)h(expression)g(co)5 b(de)67 b(uses)i(ASCI)5
b(I)66 b Fl(nul)i Fp(as)581 1648 y(an)g(end-of-string)g(mark)-5
b(er.)111 b(The)67 b(matc)-5 b(hing)68 b(pro)5 b(cedures)68
b(will)f(ignore)h(an)-5 b(y)67 b(c)-5 b(haracters)581
1848 y(follo)g(wing)56 b(an)g(em)-5 b(b)5 b(edded)56
b(ASCI)5 b(I)55 b Fl(nul)p Fp(s)h(in)g Fo(string)15 b
Fp(.)581 2236 y Fl(\(define)89 b(pattern)f(\(text)g("abc"\)\))581
2435 y(\(any-match?)h(pattern)g("abc"\))785 b Fg(!)87
b Fl(#t)581 2635 y(\(any-match?)i(pattern)g("abx"\))785
b Fg(!)87 b Fl(#f)581 2834 y(\(any-match?)i(pattern)g("xxabcxx"\))437
b Fg(!)87 b Fl(#t)581 3232 y(\(exact-match?)j(pattern)e("abc"\))611
b Fg(!)87 b Fl(#t)581 3432 y(\(exact-match?)j(pattern)e("abx"\))611
b Fg(!)87 b Fl(#f)581 3631 y(\(exact-match?)j(pattern)e("xxabcxx"\))263
b Fg(!)87 b Fl(#f)581 4029 y(\(match)h(pattern)h("abc"\))1221
b Fg(!)87 b Fl(\(#)p Fg(f)p Fl(match)i(0)e(3)p Fg(g)p
Fl(\))581 4229 y(\(match)h(pattern)h("abx"\))1221 b Fg(!)87
b Fl(#f)581 4428 y(\(match)h(pattern)h("xxabcxx"\))873
b Fg(!)87 b Fl(\(#)p Fg(f)p Fl(match)i(2)e(5)p Fg(g)p
Fl(\))581 4826 y(\(let)h(\(\(x)g(\(match)g(\(sequence)h(\(text)f
("ab"\))2848 5026 y(\(submatch)g('foo)g(\(text)g("cd"\)\))2848
5225 y(\(text)g("ef"\)\))1976 5424 y("xxxabcdefxx"\)\)\))755
5624 y(\(list)h(x)e(\(match-submatches)j(x\)\)\))755
5823 y Fg(!)e Fl(\(#)p Fg(f)p Fl(match)g(3)f(9)p Fg(g)h
Fl(\(\(foo)g(.)f(#)p Fg(f)p Fl(match)h(5)g(7)p Fg(g)p
Fl(\)\))581 6221 y(\(match-submatches)755 6421 y(\(match)h(\(sequence)
1540 6620 y(\(set)f("a"\))1540 6819 y(\(one-of)g(\(submatch)h('foo)f
(\(text)g("bc"\)\))2237 7018 y(\(submatch)h('bar)f(\(text)g
("BC"\)\)\)\))1366 7218 y("xxxaBCd"\)\))755 7417 y Fg(!)g
Fl(\(\(bar)g(.)f(#)p Fg(f)p Fl(match)h(4)g(6)p Fg(g)p
Fl(\)\))581 7990 y Fi(5.21)270 b(SRFIs)581 8363 y Fp(`SRFI')53
b(stands)g(for)e(`Sc)-5 b(heme)52 b(Request)g(F)-14 b(or)52
b(Implemen)-5 b(tation'.)74 b(An)51 b(SRFI)i(is)f(a)g(descrip-)581
8562 y(tion)65 b(of)g(an)h(extension)f(to)g(standard)h(Sc)-5
b(heme.)105 b(Draft)64 b(and)i(\014nal)g(SRFI)g(do)5
b(cumen)-5 b(ts,)69 b(a)581 8761 y(F)-18 b(A)-5 b(Q,)37
b(and)h(other)e(information)i(ab)5 b(out)36 b(SRFIs)i(can)f(b)5
b(e)37 b(found)g(at)g Fl(http://srfi.schemers.org)p Fp(.)830
8965 y(Sc)-5 b(heme)56 b(48)g(includes)g(implemen)-5
b(tations)57 b(of)e(the)g(follo)-5 b(wing)56 b(\(\014nal\))f(SRFIs:)830
9311 y Fg(\017)83 b Fp(SRFI)56 b(1)g({)f(List)g(Library)830
9662 y Fg(\017)83 b Fp(SRFI)56 b(2)g({)f Fl(and-let*)830
10012 y Fg(\017)83 b Fp(SRFI)56 b(4)g({)f(Homogeneous)h(n)-5
b(umeric)56 b(v)-5 b(ector)55 b(datat)-5 b(yp)5 b(es)55
b(\(see)g(note)g(b)5 b(elo)-5 b(w\))3362 10511 y(67)p
eop end
%%Page: 68 76
TeXDict begin 68 75 bop 1727 1046 a Fg(\017)83 b Fp(SRFI)56
b(5)f({)h Fl(let)g Fp(with)f(signatures)h(and)g(rest)f(argumen)-5
b(ts)1727 1378 y Fg(\017)83 b Fp(SRFI)56 b(6)f({)h(Basic)f(string)h(p)5
b(orts)1727 1710 y Fg(\017)83 b Fp(SRFI)56 b(7)f({)h(Program)g
(con\014guration)1727 2042 y Fg(\017)83 b Fp(SRFI)56
b(8)f({)h Fl(receive)1727 2374 y Fg(\017)83 b Fp(SRFI)56
b(9)f({)h(De\014ning)g(record)f(t)-5 b(yp)5 b(es)1727
2707 y Fg(\017)83 b Fp(SRFI)56 b(11)f({)h(Syn)-5 b(tax)55
b(for)g(receiving)g(m)-5 b(ultiple)56 b(v)-9 b(alues)1727
3039 y Fg(\017)83 b Fp(SRFI)56 b(13)f({)h(String)f(Library)1727
3371 y Fg(\017)83 b Fp(SRFI)56 b(14)f({)h(Character-Set)f(Library)g
(\(see)g(note)g(b)5 b(elo)-5 b(w\))1727 3703 y Fg(\017)83
b Fp(SRFI)56 b(16)f({)h(Syn)-5 b(tax)55 b(for)g(pro)5
b(cedures)56 b(of)f(v)-9 b(ariable)55 b(arit)-5 b(y)1727
4035 y Fg(\017)83 b Fp(SRFI)56 b(17)f({)h(Generalized)f
Fl(set!)1727 4367 y Fg(\017)83 b Fp(SRFI)56 b(19)f({)h(Time)f(Data)g(T)
-5 b(yp)5 b(es)56 b(and)g(Pro)5 b(cedures)1727 4699 y
Fg(\017)83 b Fp(SRFI)56 b(22)f({)h(Running)h(Sc)-5 b(heme)56
b(Scripts)f(on)h(Unix)1727 5031 y Fg(\017)83 b Fp(SRFI)56
b(23)f({)h(Error)f(rep)5 b(orting)55 b(mec)-5 b(hanism)1727
5363 y Fg(\017)83 b Fp(SRFI)56 b(25)f({)h(Multi-dimensional)i(Arra)-5
b(y)55 b(Primitiv)-5 b(es)1727 5695 y Fg(\017)83 b Fp(SRFI)56
b(26)f({)h(Notation)e(for)h(Sp)5 b(ecializing)56 b(P)-5
b(arameters)56 b(without)f(Currying)1727 6027 y Fg(\017)83
b Fp(SRFI)56 b(27)f({)h(Sources)g(of)f(Random)h(Bits)1727
6359 y Fg(\017)83 b Fp(SRFI)56 b(28)f({)h(Basic)f(F)-14
b(ormat)56 b(Strings)1727 6692 y Fg(\017)83 b Fp(SRFI)56
b(31)f({)h(A)f(sp)5 b(ecial)55 b(form)h Fl(rec)g Fp(for)f(recursiv)-5
b(e)55 b(ev)-9 b(aluation)1727 7024 y Fg(\017)83 b Fp(SRFI)56
b(34)f({)h(Exception)f(Handling)h(for)f(Programs)1727
7356 y Fg(\017)83 b Fp(SRFI)56 b(35)f({)h(Conditions)1727
7688 y Fg(\017)83 b Fp(SRFI)56 b(36)f({)h(I/O)f(Conditions)1727
8020 y Fg(\017)83 b Fp(SRFI)56 b(37)f({)h(args-fold:)75
b(a)55 b(program)h(argumen)-5 b(t)56 b(pro)5 b(cessor)1727
8352 y Fg(\017)83 b Fp(SRFI)56 b(40)f({)h(A)f(Library)g(of)g(Streams)
1727 8684 y Fg(\017)83 b Fp(SRFI)56 b(42)f({)h(Eager)f(Comprehensions)
1727 9016 y Fg(\017)83 b Fp(SRFI)56 b(43)f({)h(V)-14
b(ector)54 b(library)1727 9348 y Fg(\017)83 b Fp(SRFI)56
b(45)f({)h(Primitiv)-5 b(es)56 b(for)f(Expressing)h(Iterativ)-5
b(e)55 b(Lazy)f(Algorithms)1727 9680 y Fg(\017)83 b Fp(SRFI)56
b(60)f({)h(In)-5 b(tegers)55 b(as)h(Bits)1727 10012 y
Fg(\017)83 b Fp(SRFI)56 b(61)f({)h(A)f(more)g(general)h(cond)f(clause)
4259 10511 y(68)p eop end
%%Page: 69 77
TeXDict begin 69 76 bop 830 1046 a Fg(\017)83 b Fp(SRFI)56
b(63)g({)f(Homogeneous)h(and)g(Heterogeneous)f(Arra)-5
b(ys)830 1378 y Fg(\017)83 b Fp(SRFI)56 b(66)g({)f(Octet)f(V)-14
b(ectors)830 1710 y Fg(\017)83 b Fp(SRFI)56 b(67)g({)f(Compare)h(Pro)5
b(cedures)830 2042 y Fg(\017)83 b Fp(SRFI)56 b(74)g({)f
(Octet-Addressed)h(Binary)f(Blo)5 b(c)-5 b(ks)830 2374
y Fg(\017)83 b Fp(SRFI)56 b(78)g({)f(Ligh)-5 b(t)g(w)g(eigh)g(t)57
b(testing)581 2707 y(Do)5 b(cumen)-5 b(tation)55 b(on)h(these)f(can)h
(b)5 b(e)55 b(found)h(at)e(the)h(w)-5 b(eb)56 b(site)f(men)-5
b(tioned)57 b(ab)5 b(o)-5 b(v)g(e.)830 2906 y(SRFI)44
b(4)g(sp)5 b(eci\014es)43 b(an)h(external)e(represen)-5
b(tation)44 b(for)f(homogeneous)i(n)-5 b(umeric)44 b(v)-5
b(ectors)581 3105 y(that)72 b(is)h(incompatible)g(with)f(R)2663
3045 y Fj(5)2738 3105 y Fp(RS.)h(The)g(Sc)-5 b(heme)73
b(48)f(v)-5 b(ersion)73 b(of)g(SRFI)g(4)f(do)5 b(es)73
b(not)581 3304 y(supp)5 b(ort)56 b(this)g(external)e(represen)-5
b(tation.)830 3504 y(SRFI)46 b(14)g(includes)g(the)f(pro)5
b(cedure)45 b Fl(->char-set)i Fp(whic)-5 b(h)46 b(is)g(not)f(a)h
(standard)g(Sc)-5 b(heme)581 3703 y(iden)g(ti\014er)47
b(\(in)f(R)1640 3643 y Fj(5)1715 3703 y Fp(RS)g(the)g(only)g(required)g
(iden)-5 b(ti\014er)46 b(starting)h(with)e Fl(-)i Fp(is)f
Fl(-)h Fp(itself)13 b(\).)70 b(In)46 b(the)581 3902 y(Sc)-5
b(heme)56 b(48)g(v)-5 b(ersion)56 b(of)f(SRFI)h(14)f(w)-5
b(e)56 b(ha)-5 b(v)g(e)56 b(renamed)f Fl(->char-set)j
Fp(as)d Fl(x->char-set)p Fp(.)830 4101 y(With)65 b(the)f(exception)h
(of)f(SRFI)i(62)f(\(whic)-5 b(h)65 b(is)h(supp)5 b(orted)65
b(b)-5 b(y)65 b(default\),)i(the)e(SRFI)581 4301 y(bindings)47
b(can)f(b)5 b(e)45 b(accessed)h(either)f(b)-5 b(y)46
b(op)5 b(ening)45 b(the)g(appropriate)h(structure)g(\(the)e(struc-)581
4500 y(ture)62 b Fl(srfi-)p Fo(n)76 b Fp(con)-5 b(tains)62
b(SRFI)h Fo(n)13 b Fp(\))62 b(or)g(b)-5 b(y)62 b(loading)h(structure)e
Fl(srfi-7)i Fp(and)g(then)f(using)581 4699 y(the)j Fl
(,load-srfi-7-program)70 b Fp(command)c(to)g(load)g(an)g(SRFI)g(7-st)-5
b(yle)66 b(program.)106 b(The)581 4898 y(syn)-5 b(tax)55
b(for)h(the)f(command)h(is)581 5230 y Fl(,load-srfi-7-program)91
b Fo(name)100 b(\014lename)581 5562 y Fp(This)38 b(creates)g(a)f(new)h
(structure)f(and)h(asso)5 b(ciated)38 b(pac)-5 b(k)c(age,)41
b(binds)e(the)e(structure)g(to)g Fo(name)581 5762 y Fp(in)47
b(the)e(con\014guration)i(pac)-5 b(k)c(age,)48 b(and)e(then)g(loads)h
(the)f(program)g(found)h(in)f Fo(\014lename)60 b Fp(in)-5
b(to)581 5961 y(the)55 b(pac)-5 b(k)c(age.)830 6160 y(As)56
b(an)f(example,)h(if)f(the)g(\014le)g Fl(test.scm)i Fp(con)-5
b(tains)581 6492 y Fl(\(program)89 b(\(code)f(\(define)g(x)f(10\)\)\))
581 6824 y Fp(this)56 b(program)g(can)f(b)5 b(e)55 b(loaded)h(as)g
(follo)-5 b(ws:)581 7156 y Fl(>)87 b(,load-package)j(srfi-7)581
7356 y(>)d(,load-srfi-7-program)k(test)d(test.scm)581
7555 y([test])581 7754 y(>)f(,in)h(test)581 7954 y(test>)g(x)581
8153 y(10)581 8352 y(test>)3362 10511 y Fp(69)p eop end
%%Page: 70 78
TeXDict begin 70 77 bop 1478 2324 a Fk(Chapter)129 b(6)1478
3188 y Fn(Unico)13 b(de)1478 4084 y Fp(Sc)-5 b(heme)72
b(48)f(fully)g(supp)5 b(orts)73 b(ISO)e(10646)h(\(Unico)5
b(de\):)104 b(Sc)-5 b(heme)72 b(c)-5 b(haracters)72 b(represen)-5
b(t)1478 4283 y(Unico)5 b(de)73 b(scalar)h(v)-9 b(alues,)79
b(and)74 b(Sc)-5 b(heme)74 b(strings)h(are)f(arra)-5
b(ys)74 b(of)g(scalar)g(v)-9 b(alues.)129 b(More)1478
4483 y(information)56 b(on)f(Unico)5 b(de)55 b(can)g(b)5
b(e)55 b(found)h(at)f Fl(http://www.unicode.org/)p Fp(.)1478
5207 y Fi(6.1)269 b(Characters)89 b(and)h(their)f(co)7
b(des)1478 5632 y Fp(Sc)-5 b(heme)37 b(48)g(in)-5 b(ternally)37
b(represen)-5 b(ts)38 b(c)-5 b(haracters)37 b(as)h(Unico)5
b(de)36 b(scalar)h(v)-9 b(alues.)68 b(The)37 b Fl(unicode)1478
5831 y Fp(structure)52 b(con)-5 b(tains)54 b(pro)5 b(cedures)53
b(for)g(con)-5 b(v)g(erting)53 b(b)5 b(et)-5 b(w)g(een)53
b(c)-5 b(haracters)53 b(and)g(scalar)g(v)-9 b(al-)1478
6030 y(ues:)1511 6461 y Fg(\017)83 b Fl(\(char->scalar-value)j
Fo(char)18 b Fl(\))84 b Fg(!)f Fo(inte)-8 b(ger)1511
6660 y Fg(\017)83 b Fl(\(scalar-value->char)j Fo(inte)-8
b(ger)18 b Fl(\))85 b Fg(!)e Fo(char)1511 6860 y Fg(\017)g
Fl(\(scalar-value?)102 b Fo(inte)-8 b(ger)18 b Fl(\))85
b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)1478 7291 y Fl(Char->scalar-value)40
b Fp(returns)d(the)g(scalar)g(v)-9 b(alue)37 b(of)f(a)h(c)-5
b(haracter,)41 b(and)c Fl(scalar-value->char)1478 7490
y Fp(con)-5 b(v)g(erts)54 b(in)f(the)h(other)f(direction.)73
b Fl(Scalar-value->char)57 b Fp(signals)e(an)e(error)h(if)f(passed)1478
7689 y(an)i(in)-5 b(teger)56 b(that)f(is)g(not)h(a)f(scalar)h(v)-9
b(alue.)1727 7921 y(Note)54 b(that)h(the)g(Unico)5 b(de)55
b(scalar)g(v)-9 b(alue)55 b(range)h(is)2960 8353 y([0)p
Fd(;)28 b Fp(#)p Fd(x)p Fo(D7FF)c Fp(])37 b Fg([)f Fp([#)p
Fd(x)p Fo(E000)22 b Fd(;)28 b Fp(#)p Fd(x)p Fo(10FFFF)c
Fp(])1478 8784 y(In)53 b(particular,)g(this)g(excludes)g(the)f
(surrogates,)i(whic)-5 b(h)53 b(UTF-16)g(uses)h(to)e(enco)5
b(de)52 b(scalar)1478 8983 y(v)-9 b(alues)53 b(with)f(t)-5
b(w)g(o)53 b(16-bit)g(w)-5 b(ords.)74 b(Note)52 b(that)g(this)h
(represen)-5 b(tation)53 b(di\013ers)h(from)e(that)h(of)1478
9182 y(Ja)-5 b(v)c(a,)45 b(whic)-5 b(h)43 b(uses)h(UTF-16)e(co)5
b(de)42 b(units)i(as)e(the)h(c)-5 b(haracter)42 b(represen)-5
b(tation|Sc)g(heme)43 b(48)1478 9382 y(e\013ectiv)-5
b(ely)50 b(uses)j(UTF-32,)f(and)h(is)f(th)-5 b(us)53
b(in)f(line)g(with)f(other)g(Sc)-5 b(heme)53 b(implemen)-5
b(tations)1478 9581 y(and)56 b(the)f(curren)-5 b(t)55
b(Unico)5 b(de)55 b(prop)5 b(osal)56 b(for)f(R)4356 9521
y Fj(6)4431 9581 y Fp(RS,)h(as)g(set)f(forth)g(in)h(SRFI)g(75.)1727
9813 y(The)42 b(R)2177 9753 y Fj(5)2252 9813 y Fp(RS)h(pro)5
b(cedures)42 b Fl(char->integer)j Fp(and)e Fl(integer->char)h
Fp(are)f(synon)-5 b(yms)44 b(for)1478 10012 y Fl(char->scalar-value)58
b Fp(and)e Fl(scalar-value->char)p Fp(,)j(resp)5 b(ectiv)-5
b(ely)-14 b(.)4259 10511 y(70)p eop end
%%Page: 71 79
TeXDict begin 71 78 bop 581 1046 a Fi(6.2)270 b(Character)88
b(and)j(string)f(literals)581 1410 y Fp(The)e(syn)-5
b(tax)89 b(sp)5 b(eci\014ed)88 b(here)h(is)f(in)h(line)g(with)f(the)g
(curren)-5 b(t)88 b(Unico)5 b(de)88 b(prop)5 b(osal)89
b(for)581 1609 y(R)703 1549 y Fj(6)778 1609 y Fp(RS,)61
b(as)g(set)f(forth)g(in)g(SRFI)h(75,)h(except)d(for)h(case-sensitivit)
-5 b(y)-14 b(.)90 b(\(Sc)-5 b(heme)60 b(48)g(is)h(case-)581
1808 y(insensitiv)-5 b(e.\))581 2272 y Fc(6.2.1)225 b(Character)73
b(literals)581 2578 y Fp(The)48 b(follo)-5 b(wing)48
b(c)-5 b(haracter)47 b(names)h(are)f(a)-5 b(v)c(ailable)48
b(in)g(addition)g(to)f(what)g(R)5326 2518 y Fj(5)5401
2578 y Fp(RS)h(pro)-5 b(vides:)830 2903 y Fg(\017)83
b Fl(#\\nul)56 b Fp(\(ASCI)5 b(I)55 b(0\))830 3231 y
Fg(\017)83 b Fl(#\\alarm)57 b Fp(\(ASCI)5 b(I)54 b(7\))830
3560 y Fg(\017)83 b Fl(#\\backspace)58 b Fp(\(ASCI)5
b(I)54 b(8\))830 3889 y Fg(\017)83 b Fl(#\\tab)56 b Fp(\(ASCI)5
b(I)55 b(9\))830 4217 y Fg(\017)83 b Fl(#\\vtab)57 b
Fp(\(ASCI)5 b(I)54 b(11\))830 4546 y Fg(\017)83 b Fl(#\\page)57
b Fp(\(ASCI)5 b(I)54 b(12\))830 4874 y Fg(\017)83 b Fl(#\\return)57
b Fp(\(ASCI)5 b(I)54 b(13\))830 5203 y Fg(\017)83 b Fl(#\\esc)56
b Fp(\(ASCI)5 b(I)55 b(27\))830 5531 y Fg(\017)83 b Fl(#\\rubout)57
b Fp(\(ASCI)5 b(I)54 b(127\))830 5860 y Fg(\017)83 b
Fl(#\\x)p Fg(h)p Fp(x)p Fg(ih)p Fp(x)p Fg(i)n Fp(.)28
b(.)g(.)125 b(hex,)65 b(explicitly)d(or)h(implicitly)h(delimited,)h
(where)e Fg(h)p Fp(x)p Fg(i)o(h)p Fp(x)p Fg(i)o Fp(.)28
b(.)f(.)125 b(de-)996 6059 y(notes)56 b(the)f(scalar)h(v)-9
b(alue)55 b(of)g(the)g(c)-5 b(haracter)581 6522 y Fc(6.2.2)225
b(String)74 b(literals)581 6829 y Fp(The)g(follo)-5 b(wing)75
b(escap)5 b(e)74 b(c)-5 b(haracters)74 b(in)h(string)f(literals)h(are)f
(a)-5 b(v)c(ailable)74 b(in)g(addition)h(to)581 7028
y(what)55 b(R)1118 6968 y Fj(5)1193 7028 y Fp(RS)h(pro)-5
b(vides:)830 7384 y Fg(\017)83 b Fl(\\a)p Fp(:)75 b(alarm)55
b(\(ASCI)5 b(I)55 b(7\))830 7713 y Fg(\017)83 b Fl(\\b)p
Fp(:)75 b(bac)-5 b(kspace)55 b(\(ASCI)5 b(I)54 b(8\))830
8041 y Fg(\017)83 b Fl(\\t)p Fp(:)75 b(tab)55 b(\(ASCI)5
b(I)54 b(9\))830 8370 y Fg(\017)83 b Fl(\\n)p Fp(:)75
b(linefeed)55 b(\(ASCI)5 b(I)54 b(10\))830 8698 y Fg(\017)83
b Fl(\\v)p Fp(:)75 b(v)-5 b(ertical)54 b(tab)i(\(ASCI)5
b(I)54 b(11\))830 9027 y Fg(\017)83 b Fl(\\f)p Fp(:)75
b(formfeed)55 b(\(ASCI)5 b(I)54 b(12\))830 9355 y Fg(\017)83
b Fl(\\r)p Fp(:)75 b(return)55 b(\(ASCI)5 b(I)54 b(13\))830
9684 y Fg(\017)83 b Fl(\\e)p Fp(:)75 b(escap)5 b(e)55
b(\(ASCI)5 b(I)54 b(27\))830 10012 y Fg(\017)83 b Fl(\\')p
Fp(:)75 b(quote)54 b(\(ASCI)5 b(I)54 b(39,)i(same)g(as)g(unquoted\))
3362 10511 y(71)p eop end
%%Page: 72 80
TeXDict begin 72 79 bop 1727 1046 a Fg(\017)83 b Fl(\\)p
Fg(h)p Fp(newline)p Fg(i)o(h)p Fp(in)-5 b(traline)56
b(whitespace)p Fg(i)p Fp(:)66 b(elided)40 b(\(allo)-5
b(ws)40 b(a)g(single-line)h(string)f(to)f(span)1893 1245
y(source)56 b(lines\))1727 1590 y Fg(\017)83 b Fl(\\x)p
Fg(h)p Fp(x)p Fg(i)o(h)p Fp(x)p Fg(i)o Fp(.)28 b(.)f(.)h
Fl(;)39 b Fp(hex,)i(where)e Fg(h)p Fp(x)p Fg(i)n(h)p
Fp(x)p Fg(i)o Fp(.)28 b(.)g(.)96 b(denotes)38 b(the)g(scalar)h(v)-9
b(alue)38 b(of)h(the)f(c)-5 b(haracter)1478 2072 y Fc(6.2.3)225
b(Iden)-6 b(ti\014ers)74 b(and)g(sym)-6 b(b)6 b(ol)75
b(literals)1478 2384 y Fp(Where)42 b(R)2118 2324 y Fj(5)2192
2384 y Fp(RS)h(allo)-5 b(ws)44 b(a)e Fg(h)p Fp(letter)p
Fg(i)n Fp(,)j(Sc)-5 b(heme)43 b(48)g(allo)-5 b(ws)43
b(in)g(addition)g(an)-5 b(y)43 b(c)-5 b(haracter)42 b(whose)1478
2583 y(scalar)59 b(v)-9 b(alue)58 b(is)i(greater)e(than)g(127)h(and)h
(whose)f(Unico)5 b(de)58 b(general)h(category)e(is)j(Lu,)f(Ll,)1478
2783 y(Lt,)c(Lm,)g(Lo,)h(Mn,)f(Mc,)h(Me,)f(Nd,)h(Nl,)f(No,)g(Pd,)h(Pc,)
f(P)-5 b(o,)56 b(Sc,)f(Sm,)h(Sk,)g(So,)f(or)h(Co.)1727
2985 y(Moreo)-5 b(v)g(er,)42 b(when)c(a)g(bac)-5 b(kslash)40
b(app)5 b(ears)39 b(in)f(a)g(sym)-5 b(b)5 b(ol,)43 b(it)38
b(m)-5 b(ust)39 b(start)f(a)g Fl(\\x)p Fg(h)p Fp(x)p
Fg(i)o(h)p Fp(x)p Fg(i)o Fp(.)28 b(.)f(.)h Fl(;)1478
3184 y Fp(escap)5 b(e,)64 b(whic)-5 b(h)63 b(iden)-5
b(ti\014es)63 b(an)g(arbitrary)f(c)-5 b(haracter)62 b(to)f(include)i
(in)g(the)f(sym)-5 b(b)5 b(ol.)95 b(Note)1478 3384 y(that)55
b(a)g(bac)-5 b(kslash)57 b(itself)e(can)g(b)5 b(e)55
b(sp)5 b(eci\014ed)56 b(as)g Fl(\\x5C;)p Fp(.)1478 3950
y Fi(6.3)269 b(Character)89 b(classi\014cation)g(and)h(case)f(mappings)
1478 4319 y Fp(The)37 b(R)1923 4259 y Fj(5)1997 4319
y Fp(RS)h(c)-5 b(haracter)36 b(predicates|)p Fl(char-whitespace?)p
Fp(,)44 b Fl(char-lower-case?)p Fp(,)f Fl(char-upper-case?)p
Fp(,)1478 4519 y Fl(char-numeric?)p Fp(,)58 b(and)d Fl
(char-alphabetic?)p Fp(|all)k(treat)54 b(the)h(full)h(Unico)5
b(de)54 b(range.)1727 4721 y Fl(Char-upcase)39 b Fp(and)e
Fl(char-downcase)i Fp(as)f(w)-5 b(ell)37 b(as)g Fl(char-ci=?)p
Fp(,)43 b Fl(char-ci<?)p Fp(,)f Fl(char-ci<=?)p Fp(,)1478
4920 y Fl(char-ci>?)p Fp(,)g Fl(char-ci>=?)p Fp(,)g Fl(string-ci=?)p
Fp(,)h Fl(string-ci<?)p Fp(,)g Fl(string-ci>?)p Fp(,)f
Fl(string-ci<=?)p Fp(,)1478 5119 y Fl(string-ci>=?)76
b Fp(all)55 b(use)h(the)f(standard)h(simple)h(lo)5 b(cale-insensitiv)-5
b(e)56 b(Unico)5 b(de)54 b(case)i(fold-)1478 5319 y(ing.)1727
5521 y(In)50 b(addition,)h(Sc)-5 b(heme)50 b(48)g(pro)-5
b(vides)50 b(the)f Fl(unicode-char-maps)k Fp(structure)c(for)g(more)
1478 5720 y(complete)59 b(access)i(to)e(the)h(Unico)5
b(de)59 b(c)-5 b(haracter)60 b(classi\014cation)h(with)e(the)h(follo)-5
b(wing)61 b(pro-)1478 5920 y(cedures)56 b(and)f(macros:)1511
6261 y Fg(\017)83 b Fl(\(general-category)j Fo(gener)-8
b(al-c)g(ate)g(gory-name)12 b Fl(\))58 b Fg(!)e Fo(gener)-8
b(al-c)g(ate)g(gory)346 b Fp(syn)-5 b(tax)1511 6461 y
Fg(\017)83 b Fl(\(general-category?)103 b Fo(x)20 b Fl(\))83
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1511 6660 y Fg(\017)83
b Fl(\(general-category-id)k Fo(gener)-8 b(al-c)g(ate)g(gory)15
b Fl(\))84 b Fg(!)f Fo(string)1511 6859 y Fg(\017)g Fl
(\(char-general-category)k Fo(char)18 b Fl(\))83 b Fg(!)g
Fo(gener)-8 b(al-c)g(ate)g(gory)1478 7201 y Fp(The)50
b(syn)-5 b(tax)50 b Fl(general-category)i Fp(returns)f(a)f(Unico)5
b(de)49 b(general)h(category)f(ob)9 b(ject)49 b(asso-)1478
7400 y(ciated)36 b(with)h Fo(gener)-8 b(al-c)g(ate)g(gory-name)12
b Fp(.)70 b(\(See)37 b(Figure)g(6.1)g(b)5 b(elo)-5 b(w.\))68
b Fl(General-category?)1478 7599 y Fp(is)44 b(the)e(predicate)h(for)g
(general-category)g(ob)9 b(jects.)70 b Fl(General-category-id)46
b Fp(returns)e(the)1478 7798 y(Unico)5 b(de)36 b(category)g(id)h(as)h
(a)e(string)i(\(also)f(listed)g(in)h(Figure)f(6.1\).)68
b Fl(Char-general-category)1478 7998 y Fp(returns)56
b(the)f(general)g(category)f(of)h(a)h(c)-5 b(haracter.)1511
8306 y Fg(\017)83 b Fl(\(general-category-primary-category)89
b Fo(gener)-8 b(al-c)g(ate)g(gory)15 b Fl(\))84 b Fg(!)f
Fo(primary-c)-8 b(ate)g(gory)1511 8505 y Fg(\017)83 b
Fl(\(primary-category)j Fo(primary-c)-8 b(ate)g(gory-name)12
b Fl(\))56 b Fg(!)f Fo(primary-c)-8 b(ate)g(gory)213
b Fp(syn)-5 b(tax)1511 8705 y Fg(\017)83 b Fl(\(primary-category?)103
b Fo(x)20 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1478
9013 y Fl(General-category-primary-category)68 b Fp(maps)63
b(the)f(general)g(category)f(to)h(its)g(asso-)1478 9212
y(ciated)81 b(primary)h(category|also)g(listed)g(in)g(Figure)g(6.1.)154
b(The)82 b Fl(primary-category)1478 9412 y Fp(syn)-5
b(tax)67 b(returns)g(the)f(primary-category)h(ob)9 b(ject)66
b(asso)5 b(ciated)67 b(with)g Fo(primary-c)-8 b(ate)g(gory-)1478
9611 y(name)12 b Fp(.)75 b Fl(Primary-category?)h Fp(is)56
b(the)f(predicate)g(for)g(primary-category)g(ob)9 b(jects.)1727
9813 y(The)73 b Fl(unicode-char-maps)j Fp(pro)5 b(cedure)73
b(also)h(pro)-5 b(vides)74 b(the)f(follo)-5 b(wing)74
b(additional)1478 10012 y(case-mapping)57 b(pro)5 b(cedures)56
b(for)f(c)-5 b(haracters:)4259 10511 y(72)p eop end
%%Page: 73 81
TeXDict begin 73 80 bop 614 1046 a Fg(\017)83 b Fl(\(char-titlecase?)
103 b Fo(char)18 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614
1245 y Fg(\017)83 b Fl(\(char-titlecase)j Fo(char)18
b Fl(\))83 b Fg(!)g Fo(char)614 1445 y Fg(\017)g Fl(\(char-foldcase)j
Fo(char)18 b Fl(\))83 b Fg(!)g Fo(char)581 1835 y Fl(Char-titlecase?)94
b Fp(tests)61 b(if)g(a)h(c)-5 b(haracter)60 b(is)i(in)g(titlecase.)91
b Fl(Char-titlecase)63 b Fp(returns)581 2035 y(the)77
b(titlecase)g(coun)-5 b(terpart)77 b(of)h(a)f(c)-5 b(haracter.)140
b Fl(Char-foldcase)80 b Fp(folds)e(the)f(case)g(of)h(a)581
2234 y(c)-5 b(haracter,)52 b(i.e.)g(maps)g(it)f(to)g(upp)5
b(ercase)52 b(\014rst,)g(then)g(to)e(lo)-5 b(w)g(ercase.)74
b(The)51 b(follo)-5 b(wing)52 b(case-)581 2433 y(mapping)57
b(pro)5 b(cedures)55 b(on)h(strings)g(are)g(a)-5 b(v)c(ailable:)614
2824 y Fg(\017)83 b Fl(\(string-upcase)j Fo(string)15
b Fl(\))83 b Fg(!)h Fo(string)614 3023 y Fg(\017)f Fl
(\(string-downcase)j Fo(string)15 b Fl(\))84 b Fg(!)f
Fo(string)614 3222 y Fg(\017)g Fl(\(string-titlecase)j
Fo(string)15 b Fl(\))84 b Fg(!)f Fo(string)614 3422 y
Fg(\017)g Fl(\(string-foldcase)j Fo(string)15 b Fl(\))84
b Fg(!)f Fo(string)581 3812 y Fp(These)55 b(implemen)-5
b(t)55 b(the)f(simple)i(case)e(mappings)i(de\014ned)f(b)-5
b(y)55 b(the)f(Unico)5 b(de)54 b(standard|)581 4012 y(note)46
b(that)f(the)h(length)g(of)f(the)h(output)g(string)g(ma)-5
b(y)47 b(b)5 b(e)45 b(di\013eren)-5 b(t)46 b(from)h(that)e(of)h(the)f
(input)581 4211 y(string.)581 4864 y Fi(6.4)270 b(SRFI)90
b(14)581 5264 y Fp(The)71 b(SRFI)g(14)f(\(\\Character)g(Sets"\))g
(implemen)-5 b(tation)71 b(in)g(the)f Fl(srfi-14)i Fp(structure)e(is)
581 5463 y(fully)55 b(Unico)5 b(de-complian)-5 b(t.)581
6116 y Fi(6.5)270 b(R6RS)581 6516 y Fp(The)51 b Fl(unicode-r6rs)h
Fp(structure)e(exp)5 b(orts)50 b(the)g(pro)5 b(cedures)51
b(from)f(the)g Fl(\(r6rs)88 b(unicode\))581 6715 y Fp(library)56
b(of)f(5.91)g(draft)g(of)g(R)2383 6655 y Fj(6)2458 6715
y Fp(RS)h(that)f(are)g(not)g(already)g(in)h(the)f Fl(scheme)h
Fp(structure:)581 7178 y Fl(string-normalize-nfd)581
7377 y(string-normalize-nfkd)581 7576 y(string-normalize-nfc)581
7776 y(string-normalize-nfkc)581 7975 y(char-titlecase)581
8174 y(char-title-case?)581 8373 y(char-foldcase)581
8573 y(string-upcase)581 8772 y(string-downcase)581 8971
y(string-foldcase)581 9170 y(string-titlecase)581 9614
y Fp(The)42 b Fl(r6rs-unicode)j Fp(structure)d(also)h(exp)5
b(orts)42 b(a)g Fl(char-general-category)k Fp(pro)5 b(cedure)581
9813 y(compatible)64 b(with)g(the)g Fl(\(r6rs)88 b(unicode\))65
b Fp(library)-14 b(.)100 b(Note)63 b(that,)i(as)g(Sc)-5
b(heme)64 b(48)g(treats)581 10012 y(source)56 b(co)5
b(de)55 b(case-insensitiv)-5 b(ely)-14 b(,)57 b(the)e(sym)-5
b(b)5 b(ols)56 b(it)f(returns)h(are)f(all-lo)-5 b(w)g(ercase.)3362
10511 y(73)p eop end
%%Page: 74 82
TeXDict begin 74 81 bop 1478 1059 a Fi(6.6)269 b(I/O)1478
1429 y Fp(P)-5 b(orts)82 b(m)-5 b(ust)84 b(enco)5 b(de)81
b(an)-5 b(y)83 b(text)e(a)h(program)h(writes)f(to)g(an)g(output)g(p)5
b(ort)82 b(to)f(a)i(b)-5 b(yte)1478 1628 y(sequence,)85
b(and)79 b(con)-5 b(v)g(ersely)80 b(deco)5 b(de)78 b(b)-5
b(yte)79 b(sequences)g(when)g(a)g(program)h(reads)g(text)1478
1827 y(from)d(an)h(input)g(p)5 b(ort.)140 b(Therefore,)82
b(eac)-5 b(h)78 b(p)5 b(ort)77 b(has)h(an)g(asso)5 b(ciated)77
b Fo(text)k(c)-8 b(o)g(de)g(c)86 b Fp(that)1478 2027
y(describ)5 b(es)56 b(ho)-5 b(w)56 b(enco)5 b(de)55 b(and)g(deco)5
b(de)55 b(text.)1727 2229 y(Note)60 b(that)h(the)g(in)-5
b(terface)61 b(to)g(the)g(text)f(co)5 b(dec)61 b(functionalit)-5
b(y)61 b(is)i(exp)5 b(erimen)-5 b(tal)61 b(and)1478 2428
y(v)-5 b(ery)55 b(lik)-5 b(ely)55 b(to)g(c)-5 b(hange)56
b(in)f(the)g(future.)1478 2909 y Fc(6.6.1)225 b(T)-19
b(ext)75 b(co)6 b(decs)1478 3222 y Fp(The)55 b Fl(i/o)h
Fp(structure)f(de\014nes)h(the)f(follo)-5 b(wing)56 b(pro)5
b(cedures:)1511 3563 y Fg(\017)83 b Fl(\(port-text-codec)j
Fo(p)-8 b(ort)16 b Fl(\))82 b Fg(!)h Fo(text-c)-8 b(o)g(de)g(c)1511
3762 y Fg(\017)83 b Fl(\(set-port-text-codec!)k Fo(p)-8
b(ort)82 b(text-c)-8 b(o)g(de)g(c)9 b Fl(\))1478 4104
y Fp(These)69 b(t)-5 b(w)g(o)69 b(pro)5 b(cedures)70
b(retriev)-5 b(e)68 b(and)h(set)g(the)g(text)e(co)5 b(dec)69
b(asso)5 b(ciated)69 b(with)g(a)g(p)5 b(ort,)1478 4303
y(resp)g(ectiv)-5 b(ely)-14 b(.)73 b(A)54 b(program)h(can)g(set)g(text)
e(co)5 b(dec)54 b(of)h(a)f(p)5 b(ort)55 b(at)f(an)-5
b(y)55 b(time,)g(ev)-5 b(en)55 b(if)f(it)h(has)1478 4502
y(already)g(p)5 b(erformed)55 b(I/O)h(on)f(the)g(p)5
b(ort.)1727 4705 y(The)55 b Fl(text-codecs)i Fp(structure)f(de\014nes)g
(the)f(follo)-5 b(wing)56 b(pro)5 b(cedures)55 b(and)h(macros:)1511
5013 y Fg(\017)83 b Fl(\(text-codec?)102 b Fo(x)20 b
Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1511 5212 y
Fg(\017)83 b Fl(null-text-codec)3477 b Fp(text-co)5 b(dec)1511
5411 y Fg(\017)83 b Fl(us-ascii-codec)3564 b Fp(text-co)5
b(dec)1511 5611 y Fg(\017)83 b Fl(latin-1-codec)3651
b Fp(text-co)5 b(dec)1511 5810 y Fg(\017)83 b Fl(utf-8-codec)3825
b Fp(text-co)5 b(dec)1511 6009 y Fg(\017)83 b Fl(utf-16le-codec)3564
b Fp(text-co)5 b(dec)1511 6208 y Fg(\017)83 b Fl(utf-16be-codec)3564
b Fp(text-co)5 b(dec)1511 6408 y Fg(\017)83 b Fl(utf-32le-codec)3564
b Fp(text-co)5 b(dec)1511 6607 y Fg(\017)83 b Fl(utf-32be-codec)3564
b Fp(text-co)5 b(dec)1511 6806 y Fg(\017)83 b Fl(\(find-text-codec)j
Fo(string)15 b Fl(\))83 b Fg(!)g Fo(text-c)-8 b(o)g(de)g(c)84
b(or)f Fl(#f)1478 7114 y(Text-codec?)136 b Fp(is)76 b(the)f(predicate)g
(for)g(text)f(co)5 b(decs.)134 b Fl(Null-text-codec)78
b Fp(is)e(primar-)1478 7314 y(ily)d(mean)-5 b(t)74 b(for)g(n)-5
b(ull)74 b(p)5 b(orts)74 b(that)f(nev)-5 b(er)73 b(yield)h(input)g(and)
g(sw)-5 b(allo)g(w)75 b(all)f(output.)128 b(The)1478
7513 y(follo)-5 b(wing)60 b(text)d(co)5 b(decs)59 b(implemen)-5
b(t)60 b(the)f(US-ASCI)5 b(I,)59 b(Latin-1,)h(Unico)5
b(de)59 b(UTF-8,)h(Uni-)1478 7712 y(co)5 b(de)72 b(UTF-16)g
(\(little-endian\),)k(Unico)5 b(de)72 b(UTF-16)g(\(big-endian\),)77
b(Unico)5 b(de)72 b(UTF-32)1478 7911 y(\(little-endian\),)55
b(Unico)5 b(de)54 b(UTF-32)i(\(big-endian\))g(enco)5
b(dings,)56 b(resp)5 b(ectiv)-5 b(ely)-14 b(.)1727 8114
y Fl(Find-text-codec)66 b Fp(\014nds)e(the)f(co)5 b(dec)63
b(asso)5 b(ciated)63 b(with)g(an)h(enco)5 b(ding)63 b(name.)98
b(The)1478 8313 y(names)47 b(of)e(the)h(ab)5 b(o)-5 b(v)g(e)46
b(enco)5 b(dings)47 b(are)e Fl("null")p Fp(,)k Fl("US-ASCII")p
Fp(,)h Fl("ISO8859-1")p Fp(,)g Fl("UTF-8")p Fp(,)1478
8512 y Fl("UTF-16LE")p Fp(,)57 b Fl("UTF-16BE")p Fp(,)g
Fl("UTF-32LE")p Fp(,)g(and)f Fl("UTF-32BE")p Fp(,)h(resp)5
b(ectiv)-5 b(ely)-14 b(.)1478 8993 y Fc(6.6.2)225 b(T)-19
b(ext-co)6 b(dec)75 b(utilities)1478 9306 y Fp(The)65
b Fl(text-codec-utils)j Fp(structure)d(exp)5 b(orts)65
b(a)g(few)g(utilities)h(for)f(dealing)h(with)f(text)1478
9505 y(co)5 b(decs:)1511 9813 y Fg(\017)83 b Fl
(\(guess-port-text-codec-according-to-bom)90 b Fo(p)-8
b(ort)16 b Fl(\))82 b Fg(!)h Fo(text-c)-8 b(o)g(de)g(c)84
b(or)f Fl(#f)1511 10012 y Fg(\017)g Fl
(\(set-port-text-codec-according-to-bom!)107 b Fo(p)-8
b(ort)16 b Fl(\))82 b Fg(!)h Fo(b)-8 b(o)g(ole)g(an)4259
10511 y Fp(74)p eop end
%%Page: 75 83
TeXDict begin 75 82 bop 581 1046 a Fp(These)48 b(pro)5
b(cedures)48 b(lo)5 b(ok)47 b(at)g(the)g(b)-5 b(yte-order-mark)48
b(\(also)g(called)f(the)g(\\BOM",)h Fl(U+FEFF)p Fp(\))581
1245 y(at)42 b(the)f(b)5 b(eginning)42 b(of)g(a)g(p)5
b(ort)41 b(and)h(guess)h(the)f(appropriate)g(text)e(co)5
b(dec.)69 b(This)42 b(w)-5 b(orks)43 b(only)581 1445
y(for)37 b(UTF-16)g(\(little-endian)g(and)g(big-endian\))h(and)g
(UTF-8.)68 b Fl(Guess-port-text-codec-according-to-bom)581
1644 y Fp(returns)55 b(the)f(text)f(co)5 b(dec,)54 b(or)h
Fl(#f)f Fp(if)h(it)f(found)h(no)g(UTF-16)f(or)h(UTF-8)f(BOM.)h(Note)e
(that)581 1843 y(this)59 b(actually)f(reads)h(from)g(the)f(p)5
b(ort.)83 b(If)58 b(the)g(guess)i(do)5 b(es)59 b(not)f(succeed,)i(it)e
(is)h(probably)581 2042 y(a)66 b(go)5 b(o)g(d)65 b(idea)h(to)g(re-op)5
b(en)66 b(the)f(p)5 b(ort.)105 b Fl
(Set-port-text-codec-according-to-bom!)581 2242 y Fp(calls)59
b Fl(guess-port-text-codec-according-to-bom)p Fp(,)65
b(sets)58 b(the)g(p)5 b(ort)57 b(text)g(co)5 b(dec)57
b(to)581 2441 y(the)h(result)h(if)g(successful)h(and)f(returns)g
Fl(#t)p Fp(.)84 b(If)58 b(it)h(is)g(not)f(successful,)j(it)d(returns)i
Fl(#f)p Fp(.)84 b(As)581 2640 y(with)78 b Fl
(guess-port-text-codec-according-to-bom)p Fp(,)91 b(this)79
b(reads)g(from)f(the)g(p)5 b(ort,)581 2839 y(whether)55
b(successful)i(or)e(not.)581 3322 y Fc(6.6.3)225 b(Creating)75
b(text)g(co)6 b(decs)614 3632 y Fg(\017)83 b Fl(\(make-text-codec)j
Fo(strings)e(enc)-8 b(o)g(de-pr)g(o)g(c)83 b(de)-8 b(c)g(o)g(de-pr)g(o)
g(c)9 b Fl(\))82 b Fg(!)h Fo(text-c)-8 b(o)g(de)g(c)614
3831 y Fg(\017)83 b Fl(\(text-codec-names)j Fo(text-c)-8
b(o)g(de)g(c)9 b Fl(\))84 b Fg(!)g Fo(list)f(of)g(strings)614
4030 y Fg(\017)g Fl(\(text-codec-encode-char-proc)88
b Fo(text-c)-8 b(o)g(de)g(c)9 b Fl(\))84 b Fg(!)166 b
Fo(enc)-8 b(o)g(de-pr)g(o)g(c)614 4230 y Fg(\017)83 b
Fl(\(text-codec-decode-char-proc)88 b Fo(text-c)-8 b(o)g(de)g(c)9
b Fl(\))84 b Fg(!)166 b Fo(de)-8 b(c)g(o)g(de-pr)g(o)g(c)614
4429 y Fg(\017)83 b Fl(\(define-text-codec)k Fo(id)99
b(name)d(enc)-8 b(o)g(de-pr)g(o)g(c)93 b(de)-8 b(c)g(o)g(de-pr)g(o)g(c)
9 b Fl(\))839 b Fp(syn)-5 b(tax)614 4628 y Fg(\017)83
b Fl(\(define-text-codec)k Fo(id)99 b Fl(\()p Fo(name)e
Fl(...\))170 b Fo(enc)-8 b(o)g(de-pr)g(o)g(c)93 b(de)-8
b(c)g(o)g(de-pr)g(o)g(c)9 b Fl(\))233 b Fp(syn)-5 b(tax)581
4937 y Fl(Make-text-codec)83 b Fp(constructs)d(a)g(text)f(co)5
b(dec)79 b(from)h(a)g(list)g(of)g(names,)87 b(and)81
b(an)f(en-)581 5137 y(co)5 b(de)80 b(and)g(a)g(deco)5
b(de)79 b(pro)5 b(cedure.)148 b(\(See)79 b(b)5 b(elo)-5
b(w)80 b(on)g(ho)-5 b(w)81 b(to)e(construct)h(enco)5
b(de)79 b(and)581 5336 y(deco)5 b(de)53 b(pro)5 b(cedures.\))74
b Fl(Text-codec-names)p Fp(,)56 b Fl(text-codec-encode-char-proc)p
Fp(,)j(and)581 5535 y Fl(text-codec-decode-char-proc)42
b Fp(are)36 b(the)h(accessors)h(for)f(text)e(co)5 b(dec.)67
b(The)37 b Fl(define-text-codec)581 5734 y Fp(is)50 b(a)f(shorthand)h
(for)f(binding)i(a)e(global)h(iden)-5 b(ti\014er)49 b(to)g(a)g(text)f
(co)5 b(dec.)71 b(Its)49 b(\014rst)h(form)f(is)h(for)581
5934 y(co)5 b(decs)55 b(with)g(only)h(one)f(name,)h(the)f(second)h(for)
f(co)5 b(decs)55 b(with)h(sev)-5 b(eral)55 b(names.)830
6136 y(Enco)5 b(ding)56 b(and)g(deco)5 b(ding)55 b(pro)5
b(cedures)56 b(w)-5 b(ork)55 b(as)h(follo)-5 b(ws:)614
6479 y Fg(\017)83 b Fl(\()p Fo(enc)-8 b(o)g(de-pr)g(o)g(c)93
b(char)83 b(bu\013er)h(start)f(c)-8 b(ount)16 b Fl(\))83
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)83 b(mayb)-8 b(e-c)g(ount)614
6678 y Fg(\017)83 b Fl(\()p Fo(de)-8 b(c)g(o)g(de-pr)g(o)g(c)92
b(bu\013er)84 b(start)f(c)-8 b(ount)16 b Fl(\))83 b Fg(!)g
Fo(mayb)-8 b(e-char)83 b(c)-8 b(ount)581 7020 y Fp(An)66
b Fo(enc)-8 b(o)g(de-pr)g(o)g(c)75 b Fp(consumes)67 b(a)e(c)-5
b(haracter)66 b Fo(char)84 b Fp(to)65 b(enco)5 b(de,)68
b(a)d(b)-5 b(yte)66 b(v)-5 b(ector)65 b Fo(bu\013er)84
b Fp(to)581 7219 y(receiv)-5 b(e)74 b(the)h(enco)5 b(ding,)80
b(an)75 b(index)g Fo(start)90 b Fp(in)-5 b(to)75 b(the)g(bu\013er,)80
b(and)75 b(a)g(blo)5 b(c)-5 b(k)74 b(size)h Fo(c)-8 b(ount)17
b Fp(.)581 7419 y(It)68 b(is)h(supp)5 b(osed)69 b(to)f(enco)5
b(de)68 b(the)f(b)-5 b(ytes)69 b(in)-5 b(to)68 b(the)g(blo)5
b(c)-5 b(k)68 b(at)g([)p Fo(start)16 b Fd(;)28 b Fo(start)59
b(+)h(c)-8 b(ount)16 b Fp(\).)112 b(If)581 7618 y(the)73
b(enco)5 b(ding)74 b(is)h(successful,)k(the)73 b(pro)5
b(cedure)74 b(m)-5 b(ust)75 b(return)e Fl(#t)h Fp(and)h(the)e(n)-5
b(um)g(b)5 b(er)75 b(of)581 7817 y(b)-5 b(ytes)66 b(needed)h(b)-5
b(y)66 b(the)g(enco)5 b(ding.)106 b(If)66 b(the)g(c)-5
b(haracter)65 b(cannot)h(b)5 b(e)66 b(enco)5 b(ded)66
b(at)g(all,)j(the)581 8016 y(pro)5 b(cedure)62 b(m)-5
b(ust)63 b(return)f Fl(#f)g Fp(and)g Fl(#f)p Fp(.)94
b(If)62 b(the)g(enco)5 b(ding)62 b(is)g(p)5 b(ossible)63
b(but)f(the)g(space)g(is)581 8216 y(not)47 b(su\016cien)-5
b(t,)51 b(the)c(pro)5 b(cedure)47 b(m)-5 b(ust)49 b(return)e
Fl(#f)h Fp(and)g(a)f(total)g(n)-5 b(um)g(b)5 b(er)49
b(of)e(b)-5 b(ytes)48 b(needed)581 8415 y(for)55 b(the)g(enco)5
b(ding.)830 8618 y(A)52 b Fo(de)-8 b(c)g(o)g(de-pr)g(o)g(c)61
b Fp(consumes)54 b(a)f(b)-5 b(yte)52 b(v)-5 b(ector)52
b Fo(bu\013er)19 b Fp(,)53 b(an)g(index)g Fo(start)68
b Fp(in)-5 b(to)53 b(the)f(bu\013er,)581 8817 y(and)38
b(a)e(blo)5 b(c)-5 b(k)37 b(size)g Fo(c)-8 b(ount)16
b Fp(.)68 b(It)37 b(is)g(supp)5 b(osed)38 b(to)f(deco)5
b(de)36 b(the)h(b)-5 b(ytes)37 b(at)f(indices)i([)p Fo(start)16
b Fd(;)28 b Fo(start)59 b(+)h(c)-8 b(ount)16 b Fp(\).)581
9016 y(If)54 b(the)g(deco)5 b(ding)55 b(is)g(successul,)h(it)f(m)-5
b(ust)55 b(return)g(the)f(deco)5 b(ded)54 b(c)-5 b(haracter)54
b(at)g(the)g(b)5 b(egin-)581 9215 y(ning)49 b(of)f(the)g(blo)5
b(c)-5 b(k,)49 b(and)g(the)f(n)-5 b(um)g(b)5 b(er)49
b(of)f(b)-5 b(ytes)48 b(consumed.)73 b(If)48 b(the)g(blo)5
b(c)-5 b(k)48 b(cannot)g(b)5 b(egin)581 9415 y(with)49
b(or)h(b)5 b(e)49 b(a)g(pre\014x)h(of)f(a)h(v)-9 b(alid)49
b(enco)5 b(ding,)51 b(the)e(pro)5 b(cedure)49 b(m)-5
b(ust)51 b(return)e Fl(#f)h Fp(and)g Fl(#f)p Fp(.)72
b(If)581 9614 y(the)55 b(blo)5 b(c)-5 b(k)56 b(con)-5
b(tains)57 b(a)e(true)h(pre\014x)f(of)h(a)f(v)-9 b(alid)56
b(enco)5 b(ding,)56 b(the)f(pro)5 b(cedure)56 b(m)-5
b(ust)57 b(return)581 9813 y Fl(#f)76 b Fp(and)g(a)g(total)e(coun)-5
b(t)76 b(of)g(b)-5 b(ytes)75 b(\(including)i(the)e(bu\013er\))g(needed)
h(to)f(complete)g(the)581 10012 y(enco)5 b(ding.)112
b(Note)67 b(that)g(this)i(b)-5 b(yte)67 b(coun)-5 b(t)68
b(is)h(only)f(a)g(guess:)100 b(the)68 b(system)g(will)g(pro)-5
b(vide)3362 10511 y(75)p eop end
%%Page: 76 84
TeXDict begin 76 83 bop 1478 1046 a Fp(that)57 b(man)-5
b(y)58 b(b)-5 b(ytes,)59 b(but)f(the)f(deco)5 b(ding)58
b(pro)5 b(cedures)59 b(migh)-5 b(t)58 b(still)g(signal)h(an)f
(incomplete)1478 1245 y(enco)5 b(ding,)55 b(causing)i(the)e(system)g
(to)g(try)g(to)g(obtain)g(more.)1478 1794 y Fi(6.7)269
b(Default)90 b(enco)7 b(dings)1478 2158 y Fp(The)37 b(default)f(enco)5
b(ding)37 b(for)g(new)g(p)5 b(orts)37 b(is)g(UTF-8.)68
b(F)-14 b(or)38 b(the)e(default)h Fl(current-input-port)p
Fp(,)1478 2357 y Fl(current-output-port)p Fp(,)61 b(and)d
Fl(current-error-port)p Fp(,)j(Sc)-5 b(heme)58 b(48)g(consults)g(the)f
(OS)1478 2557 y(for)e(enco)5 b(ding)55 b(information.)1727
2756 y(F)-14 b(or)58 b(Unix,)f(it)g(consults)h Fl(nl)p
3473 2756 53 7 v 63 w(langinfo\(3\))p Fp(,)i(whic)-5
b(h)58 b(in)g(turn)f(consults)i(the)d Fl(LC)p 6745 2756
V 121 w Fp(en)-5 b(vi-)1478 2955 y(ronmen)g(t)63 b(v)-9
b(ariables.)94 b(If)62 b(the)g(enco)5 b(ding)62 b(is)h(not)f(de\014ned)
h(that)e(w)-5 b(a)g(y)-14 b(,)65 b(Sc)-5 b(heme)62 b(48)h(rev)-5
b(erts)1478 3154 y(to)55 b(US-ASCI)5 b(I.)1727 3354 y(Under)39
b(Windo)-5 b(ws,)45 b(Sc)-5 b(heme)40 b(48)g(uses)h(Unico)5
b(de)39 b(I/O)h(\(using)g(UTF-16\))g(for)f(the)h(default)1478
3553 y(p)5 b(orts)55 b(connected)g(to)g(the)g(console,)h(and)g(Latin-1)
f(for)g(default)g(p)5 b(orts)56 b(that)f(are)g(not.)4259
10511 y(76)p eop end
%%Page: 77 85
TeXDict begin 77 84 bop 681 2114 a Fo(gener)-8 b(al-c)g(ate)g
(gory-name)p 2956 2174 7 200 v 772 w(primary-c)g(ate)g(gory-name)p
4842 2174 V 212 w Fp(Unico)5 b(de)55 b(category)f(id)p
581 2181 5917 7 v 681 2320 a Fl(uppercase-letter)p 2956
2380 7 200 v 986 w(letter)p 4842 2380 V 1364 w("Lu")681
2520 y(lowercase-letter)p 2956 2579 V 986 w(letter)p
4842 2579 V 1364 w("Ll")681 2719 y(titlecase-letter)p
2956 2779 V 986 w(letter)p 4842 2779 V 1364 w("Lt")681
2918 y(modified-letter)p 2956 2978 V 1073 w(letter)p
4842 2978 V 1364 w("Lm")681 3117 y(other-letter)p 2956
3249 7 271 v 1334 w(letter)p 4842 3249 V 1364 w("Lo")681
3388 y(non-spacing-mark)p 2956 3448 7 200 v 986 w(mark)p
4842 3448 V 1538 w("Mn")681 3587 y(combining-spacing-mark)p
2956 3647 V 464 w(mark)p 4842 3647 V 1538 w("Mc")681
3787 y(enclosing-mark)p 2956 3918 7 271 v 1160 w(mark)p
4842 3918 V 1538 w("Me")681 4057 y(decimal-digit-number)p
2956 4117 7 200 v 638 w(number)p 4842 4117 V 1364 w("Nd")681
4257 y(letter-number)p 2956 4316 V 1247 w(number)p 4842
4316 V 1364 w("Nl")681 4456 y(other-number)p 2956 4587
7 271 v 1334 w(number)p 4842 4587 V 1364 w("No")681 4727
y(opening-punctuation)p 2956 4786 7 200 v 725 w(punctuation)p
4842 4786 V 929 w("Ps")681 4926 y(closing-punctuation)p
2956 4986 V 725 w(punctuation)p 4842 4986 V 929 w("Pe")681
5125 y(initial-quote-punctuation)p 2956 5185 V 203 w(punctuation)p
4842 5185 V 929 w("Pi")681 5324 y(final-quote-punctuation)p
2956 5384 V 377 w(punctuation)p 4842 5384 V 929 w("Pf")681
5524 y(dash-punctuation)p 2956 5583 V 986 w(punctuation)p
4842 5583 V 929 w("Pd")681 5723 y(connector-punctuation)p
2956 5783 V 551 w(punctuation)p 4842 5783 V 929 w("Pc")681
5922 y(other-punctuation)p 2956 6053 7 271 v 899 w(punctuation)p
4842 6053 V 929 w("Po")681 6193 y(currency-symbol)p 2956
6253 7 200 v 1073 w(symbol)p 4842 6253 V 1364 w("Sc")681
6392 y(mathematical-symbol)p 2956 6452 V 725 w(symbol)p
4842 6452 V 1364 w("Sm")681 6591 y(modifier-symbol)p
2956 6651 V 1073 w(symbol)p 4842 6651 V 1364 w("Sk")681
6791 y(other-symbol)p 2956 6922 7 271 v 1334 w(symbol)p
4842 6922 V 1364 w("So")681 7061 y(space-separator)p
2956 7121 7 200 v 1073 w(separator)p 4842 7121 V 1103
w("Zs")681 7261 y(paragraph-separator)p 2956 7320 V 725
w(separator)p 4842 7320 V 1103 w("Zp")681 7460 y(line-separator)p
2956 7591 7 271 v 1160 w(separator)p 4842 7591 V 1103
w("Zl")681 7731 y(control-character)p 2956 7790 7 200
v 899 w(miscellaneous)p 4842 7790 V 755 w("Cc")681 7930
y(formatting-character)p 2956 7990 V 638 w(miscellaneous)p
4842 7990 V 755 w("Cf")681 8129 y(surrogate)p 2956 8189
V 1595 w(miscellaneous)p 4842 8189 V 755 w("Cs")681 8328
y(private-use-character)p 2956 8388 V 551 w(miscellaneous)p
4842 8388 V 755 w("Co")681 8528 y(unassigned)p 2956 8587
V 1508 w(miscellaneous)p 4842 8587 V 755 w("Cn")1191
8885 y Fp(Figure)i(6.1:)74 b(Unico)5 b(de)55 b(general)g(categories)g
(and)h(primary)g(categories)3362 10511 y(77)p eop end
%%Page: 78 86
TeXDict begin 78 85 bop 1478 2294 a Fk(Chapter)129 b(7)1478
3127 y Fn(Threads)1478 3993 y Fp(This)53 b(c)-5 b(hapter)52
b(describ)5 b(es)53 b(Sc)-5 b(heme)53 b(48's)g(thread)f(system:)73
b(Sc)-5 b(heme)53 b(48)g(threads)f(are)g(fully)1478 4192
y(preemptiv)-5 b(e;)47 b(all)42 b(threads)h(\(curren)-5
b(tly\))42 b(run)h(within)g(a)f(single)i(op)5 b(erating)42
b(system)h(pro)5 b(cess.)1478 4391 y(Sc)-5 b(heme)45
b(48)g(allo)-5 b(ws)46 b(writing)f(customized,)i(nested)e(sc)-5
b(hedulers,)49 b(and)c(pro)-5 b(vides)45 b(n)-5 b(umerous)1478
4590 y(facilities)48 b(for)f(the)h(sync)-5 b(hronization)48
b(of)g(shared-memory)h(programs,)i(most)d(imp)5 b(ortan)-5
b(tly)1478 4790 y Fo(pr)d(op)g(osals)67 b Fp(for)56 b(optimistic)f
(concurrency)-14 b(.)1478 5352 y Fi(7.1)269 b(Creating)90
b(and)g(con)-7 b(trolling)90 b(threads)1478 5721 y Fp(The)55
b(bindings)i(describ)5 b(ed)56 b(in)g(this)f(section)h(are)f(part)g(of)
g(the)g Fl(threads)i Fp(structure.)1511 6061 y Fg(\017)83
b Fl(\(spawn)h Fo(thunk)18 b Fl(\))84 b Fg(!)f Fo(thr)-8
b(e)g(ad)1511 6260 y Fg(\017)83 b Fl(\(spawn)h Fo(thunk)g(name)12
b Fl(\))84 b Fg(!)f Fo(thr)-8 b(e)g(ad)1478 6600 y Fl(Spawn)67
b Fp(creates)f(a)g(new)h(thread,)i(passes)f(that)e(thread)g(to)g(the)g
(curren)-5 b(t)66 b(sc)-5 b(heduler,)71 b(and)1478 6799
y(instructs)g(the)g(sc)-5 b(heduler)72 b(to)e(run)i Fo(thunk)89
b Fp(in)72 b(that)e(thread.)120 b(The)71 b Fo(name)84
b Fp(argumen)-5 b(t)72 b(\(a)1478 6998 y(sym)-5 b(b)5
b(ol\))55 b(asso)5 b(ciates)54 b(a)h(sym)-5 b(b)5 b(olic)55
b(name)g(with)f(the)g(thread;)h(it)f(is)h(purely)f(for)g(debugging)1478
7197 y(purp)5 b(oses.)1511 7537 y Fg(\017)83 b Fl
(\(relinquish-timeslice)t(\))1511 7736 y Fg(\017)g Fl(\(sleep)h
Fo(time-in-mil)8 b(lise)-8 b(c)g(onds)14 b Fl(\))1511
7936 y Fg(\017)83 b Fl(\(terminate-current-thread)t(\))1478
8275 y(Relinquish-timeslice)57 b Fp(instructs)d(the)f(sc)-5
b(heduler)55 b(to)e(run)h(another)g(thread,)g(th)-5 b(us)54
b(re-)1478 8475 y(linquishing)62 b(the)f(timeslice)g(of)g(the)f(curren)
-5 b(t)61 b(thread.)91 b Fl(Sleep)62 b Fp(do)5 b(es)61
b(the)g(same)g(and)h(asks)1478 8674 y(the)41 b(sc)-5
b(heduler)42 b(to)e(susp)5 b(end)43 b(the)e(curren)-5
b(t)41 b(thread)g(for)g(at)g(least)g Fo(time-in-mil)8
b(lise)-8 b(c)g(onds)56 b Fp(mil-)1478 8873 y(liseconds)66
b(b)5 b(efore)65 b(resuming)i(it.)103 b(Finally)-14 b(,)69
b Fl(terminate-current-thread)g Fp(terminates)1478 9072
y(the)55 b(curren)-5 b(t)55 b(thread.)1727 9274 y(Eac)-5
b(h)73 b(thread)f(is)h(represen)-5 b(ted)73 b(b)-5 b(y)72
b(a)h(thread)f(ob)9 b(ject.)125 b(The)72 b(follo)-5 b(wing)73
b(pro)5 b(cedures)1478 9473 y(op)g(erate)54 b(on)i(that)f(ob)9
b(ject:)1511 9813 y Fg(\017)83 b Fl(\(current-thread\))j
Fg(!)d Fo(thr)-8 b(e)g(ad)1511 10012 y Fg(\017)83 b Fl(\(thread?)101
b Fo(thing)15 b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)4259
10511 y Fp(78)p eop end
%%Page: 79 87
TeXDict begin 79 86 bop 614 1046 a Fg(\017)83 b Fl(\(thread-name)i
Fo(thr)-8 b(e)g(ad)17 b Fl(\))83 b Fg(!)g Fo(name)614
1245 y Fg(\017)g Fl(\(thread-uid)i Fo(thr)-8 b(e)g(ad)17
b Fl(\))83 b Fg(!)g Fo(inte)-8 b(ger)581 1630 y Fl(Current-thread)40
b Fp(returns)d(the)g(thread)g(ob)9 b(ject)36 b(asso)5
b(ciated)37 b(with)g(the)g(curren)-5 b(tly)37 b(running)581
1829 y(thread.)74 b Fl(Thread?)g Fp(is)55 b(the)e(predicate)h(for)g
(thread)g(ob)9 b(jects.)73 b Fl(Thread-name)56 b Fp(extracts)d(the)581
2029 y(name)77 b(of)g(the)f(thread,)82 b(if)76 b(one)h(w)-5
b(as)77 b(sp)5 b(eci\014ed)77 b(in)g(the)g(call)f(to)h
Fl(spawn)p Fp(,)83 b Fl(#f)77 b Fp(otherwise.)581 2228
y Fl(Thread-uid)h Fp(returns)e(the)g Fo(uid)92 b Fp(of)76
b(the)g(thread,)81 b(a)76 b(unique)g(in)-5 b(teger)76
b(assigned)h(b)-5 b(y)76 b(the)581 2427 y(thread)55 b(system.)581
3069 y Fi(7.2)270 b(Adv)-15 b(anced)90 b(thread)g(handling)581
3466 y Fp(The)55 b(follo)-5 b(wing)57 b(bindings)g(are)e(part)g(of)g
(the)g Fl(threads-internal)j Fp(structure:)614 3851 y
Fg(\017)83 b Fl(\(terminate-thread!)k Fo(thr)-8 b(e)g(ad)17
b Fl(\))614 4050 y Fg(\017)83 b Fl(\(kill-thread!)j Fo(thr)-8
b(e)g(ad)17 b Fl(\))581 4435 y(Terminate-thread!)108
b Fp(un)-5 b(winds)67 b(the)f(thread)f(asso)5 b(ciated)66
b(with)g Fo(thr)-8 b(e)g(ad)17 b Fp(,)68 b(running)e(an)-5
b(y)581 4634 y(p)5 b(ending)44 b Fl(dynamic-wind)f Fo(after)59
b Fp(th)-5 b(unks)42 b(\(in)e(that)h(thread\),)i(after)d(whic)-5
b(h)42 b(the)e(thread)h(ter-)581 4833 y(minates.)79 b
Fl(Kill-thread!)h Fp(causes)58 b(the)e(thread)h(asso)5
b(ciated)57 b(with)g Fo(thr)-8 b(e)g(ad)73 b Fp(to)56
b(terminate)581 5032 y(immediately)g(without)f(un)-5
b(winding)57 b(its)e(con)-5 b(tin)g(uation.)581 5675
y Fi(7.3)270 b(Debugging)92 b(m)-7 b(ultithreaded)89
b(programs)581 6071 y Fp(Debugging)56 b(m)-5 b(ultithreaded)56
b(programs)h(can)e(b)5 b(e)55 b(di\016cult.)830 6288
y(As)64 b(describ)5 b(ed)63 b(in)h(section)f(3.11,)j(when)d(an)-5
b(y)64 b(thread)f(signals)i(an)e(error,)j(Sc)-5 b(heme)64
b(48)581 6487 y(stops)56 b(running)h(all)e(of)h(the)f(threads)g(at)g
(that)g(command)h(lev)-5 b(el.)830 6704 y(The)43 b(follo)-5
b(wing)43 b(pro)5 b(cedure)43 b(\(exp)5 b(orted)41 b(b)-5
b(y)43 b(the)f(structure)h Fl(debug-messages)p Fp(\))h(is)g(use-)581
6903 y(ful)56 b(in)f(debugging)i(m)-5 b(ulti-threaded)56
b(programs.)614 7288 y Fg(\017)83 b Fl(\(debug-message)j
Fo(element)2638 7313 y Fj(0)2797 7288 y Fo(.)25 b(.)g(.)g
Fl(\))581 7673 y(Debug-message)43 b Fp(prin)-5 b(ts)42
b(the)f(elemen)-5 b(ts)42 b(to)e(`)p Fl(stderr)p Fp(',)45
b(follo)-5 b(w)g(ed)42 b(b)-5 b(y)41 b(a)g(newline.)70
b(The)41 b(only)581 7872 y(t)-5 b(yp)5 b(es)58 b(of)g(v)-9
b(alues)58 b(that)g Fl(debug-message)i Fp(prin)-5 b(ts)60
b(in)e(full)h(are)f(small)h(in)-5 b(tegers)59 b(\(\014xn)-5
b(ums\),)581 8071 y(strings,)49 b(c)-5 b(haracters,)48
b(sym)-5 b(b)5 b(ols,)49 b(b)5 b(o)g(oleans,)48 b(and)e(the)f(empt)-5
b(y)45 b(list.)71 b(V)-14 b(alues)46 b(of)g(other)f(t)-5
b(yp)5 b(es)581 8271 y(are)55 b(abbreviated)g(as)h(follo)-5
b(ws:)1946 8630 y(pair)629 b Fl(\(...\))1946 8829 y Fp(v)-5
b(ector)471 b Fl(#\(...\))1946 9028 y Fp(pro)5 b(cedure)199
b Fl(#)p Fg(f)p Fl(procedure)p Fg(g)1946 9227 y Fp(record)462
b Fl(#)p Fg(f)p Fl(<name)88 b(of)g(record)g(type>)p Fg(g)1946
9427 y Fp(all)56 b(others)240 b Fl(???)581 9813 y Fp(The)53
b(great)g(thing)g(ab)5 b(out)53 b Fl(debug-message)i
Fp(is)f(that)f(it)f(b)-5 b(ypasses)55 b(Sc)-5 b(heme)54
b(48's)g(I/O)f(and)581 10012 y(thread)i(handling.)76
b(The)55 b(message)h(app)5 b(ears)56 b(immediately)-14
b(,)56 b(with)f(no)h(dela)-5 b(ys)56 b(or)f(errors.)3362
10511 y(79)p eop end
%%Page: 80 88
TeXDict begin 80 87 bop 1478 1046 a Fi(7.4)269 b(Optimistic)89
b(concurrency)1478 1410 y Fp(Most)37 b(of)g(the)f(bindings)j(describ)5
b(ed)37 b(in)g(this)h(section)f(are)f(part)h(of)g(the)f
Fl(proposals)j Fp(structure|)1478 1609 y(the)63 b(lo)-5
b(w-lev)g(el)64 b(bindings)h(describ)5 b(ed)63 b(at)g(the)g(v)-5
b(ery)63 b(end)g(of)g(the)g(section)g(are)h(part)f(of)g(the)1478
1808 y Fl(low-proposals)57 b Fp(structure.)1727 2008
y(A)52 b Fo(pr)-8 b(op)g(osal)68 b Fp(is)53 b(a)g(record)f(of)h(reads)g
(from)g(and)g(and)g(writes)f(to)g(lo)5 b(cations)53 b(in)g(memory)-14
b(.)1478 2207 y(Eac)-5 b(h)48 b(thread)f(has)i(an)f(asso)5
b(ciated)47 b Fo(curr)-8 b(ent)54 b(pr)-8 b(op)g(osal)63
b Fp(\(whic)-5 b(h)48 b(ma)-5 b(y)48 b(b)5 b(e)47 b Fl(#f)p
Fp(\).)72 b(The)47 b Fo(lo)-8 b(gging)1478 2406 y Fp(op)5
b(erations)40 b(listed)h(b)5 b(elo)-5 b(w)40 b(record)g(an)-5
b(y)40 b(v)-9 b(alues)40 b(read)g(or)h(written)e(in)h(the)g(curren)-5
b(t)40 b(prop)5 b(osal.)1478 2605 y(A)42 b(reading)g(op)5
b(eration,)45 b(suc)-5 b(h)43 b(as)g Fl(provisional-vector-ref)p
Fp(,)49 b(\014rst)43 b(c)-5 b(hec)g(ks)42 b(to)g(see)h(if)f(the)1478
2805 y(curren)-5 b(t)61 b(prop)5 b(osal)62 b(con)-5 b(tains)62
b(a)f(v)-9 b(alue)60 b(for)h(the)g(relev)-5 b(en)g(t)60
b(lo)5 b(cation.)91 b(If)61 b(so,)i(that)d(v)-9 b(alue)61
b(is)1478 3004 y(returned)h(as)h(the)f(result)h(of)f(the)g(read.)95
b(If)62 b(not,)i(the)e(curren)-5 b(t)63 b(con)-5 b(ten)g(ts)63
b(of)f(the)g(lo)5 b(cation)1478 3203 y(are)46 b(stored)g(in)h(the)f
(prop)5 b(osal)47 b(and)f(then)g(returned)g(as)h(the)f(result)g(of)g
(the)g(read.)71 b(A)46 b(logging)1478 3402 y(write)56
b(to)h(a)h(lo)5 b(cation)56 b(stores)i(the)f(new)g(v)-9
b(alue)57 b(as)h(the)f(curren)-5 b(t)57 b(con)-5 b(ten)g(ts)58
b(of)f(the)g(lo)5 b(cation)1478 3602 y(in)56 b(the)e(curren)-5
b(t)56 b(prop)5 b(osal;)56 b(the)f(con)-5 b(ten)g(ts)56
b(of)f(the)g(lo)5 b(cation)55 b(itself)g(remain)h(unc)-5
b(hanged.)1727 3801 y Fo(Committing)69 b Fp(to)54 b(a)h(prop)5
b(osal)55 b(v)-5 b(eri\014es)55 b(that)f(an)-5 b(y)55
b(reads)g(logged)f(in)h(the)f(prop)5 b(osal)55 b(are)1478
4000 y(still)60 b(v)-9 b(alid)59 b(and,)i(if)e(so,)i(p)5
b(erforms)60 b(an)-5 b(y)59 b(writes)h(that)e(the)h(prop)5
b(osal)60 b(con)-5 b(tains.)87 b(A)59 b(logged)1478 4199
y(read)52 b(is)i(v)-9 b(alid)52 b(if,)h(at)g(the)f(time)g(of)h(the)f
(commit,)h(the)g(lo)5 b(cation)52 b(con)-5 b(tains)53
b(the)f(same)i(v)-9 b(alue)1478 4399 y(it)65 b(had)h(at)f(the)g(time)h
(of)f(the)g(original)i(read)e(\(note)g(that)g(this)h(do)5
b(es)66 b(not)f(mean)h(that)f(no)1478 4598 y(c)-5 b(hange)57
b(o)5 b(ccured,)57 b(simply)g(that)g(the)f(v)-9 b(alue)56
b(no)-5 b(w)58 b(is)f(the)f(same)i(as)f(the)f(v)-9 b(alue)56
b(then\).)78 b(If)56 b(a)1478 4797 y(prop)5 b(osal)56
b(has)f(an)h(in)-5 b(v)c(alid)55 b(read)g(then)g(the)g(e\013ort)f(to)h
(commit)g(fails;)h(no)f(c)-5 b(hange)55 b(is)h(made)1478
4996 y(to)45 b(the)h(v)-9 b(alue)45 b(of)h(an)-5 b(y)46
b(lo)5 b(cation.)71 b(The)46 b(v)-5 b(eri\014cations)46
b(and)h(subsequen)-5 b(t)47 b(writes)f(to)f(memory)1478
5196 y(are)55 b(p)5 b(erformed)55 b(atomically)g(with)h(resp)5
b(ect)54 b(to)h(other)g(prop)5 b(osal)56 b(commit)g(attempts.)1511
5473 y Fg(\017)83 b Fl(\(call-ensuring-atomicity)k Fo(thunk)18
b Fl(\))84 b Fg(!)f Fo(value)h(.)25 b(.)g(.)1511 5672
y Fg(\017)83 b Fl(\(call-ensuring-atomicity!)k Fo(thunk)18
b Fl(\))1511 5871 y Fg(\017)83 b Fl(\(ensure-atomicity)j
Fo(exp)94 b Fl(...\))56 b Fg(!)f Fo(value)61 b(.)25 b(.)g(.)1899
b Fp(syn)-5 b(tax)1511 6071 y Fg(\017)83 b Fl(\(ensure-atomicity!)j
Fo(exp)94 b Fl(...\))2721 b Fp(syn)-5 b(tax)1478 6348
y(If)36 b(there)h(is)g(a)g(prop)5 b(osal)38 b(in)f(place)g
Fl(call-ensuring-atomicity)k Fp(and)c Fl(call-ensuring-atomicity!)1478
6547 y Fp(simply)59 b(mak)-5 b(e)59 b(a)g(\(tail-recursiv)-5
b(e\))58 b(call)h(to)f Fo(thunk)18 b Fp(.)84 b(If)59
b(the)f(curren)-5 b(t)58 b(prop)5 b(osal)60 b(is)f Fl(#f)g
Fp(they)1478 6746 y(create)74 b(a)i(new)g(prop)5 b(osal,)81
b(install)c(it,)j(call)c Fo(thunk)18 b Fp(,)82 b(and)76
b(then)f(try)g(to)h(commit)f(to)h(the)1478 6946 y(prop)5
b(osal.)124 b(This)73 b(pro)5 b(cess)72 b(rep)5 b(eats,)76
b(with)71 b(a)h(new)g(prop)5 b(osal)73 b(on)f(eac)-5
b(h)72 b(iteration,)k(un)-5 b(til)1478 7145 y(the)60
b(commit)i(succeeds.)91 b Fl(Call-ensuring-atomicity)65
b Fp(returns)d(whatev)-5 b(er)60 b(v)-9 b(alues)61 b(are)1478
7344 y(returned)j(b)-5 b(y)66 b Fo(thunk)83 b Fp(on)64
b(its)g(\014nal)h(in)-5 b(v)g(o)5 b(cation,)66 b(while)e
Fl(ensure-atomicity!)103 b Fp(discards)1478 7543 y(an)-5
b(y)55 b(suc)-5 b(h)57 b(v)-9 b(alues)55 b(and)h(returns)g(nothing.)
1727 7743 y Fl(Ensure-Atomicity)40 b Fp(and)d Fl(ensure-atomicity!)71
b Fp(are)36 b(macro)h(v)-5 b(ersions)39 b(of)49 b Fl
(call-ensuring-atomicity)1478 7942 y Fp(and)37 b Fl
(call-ensuring-atomicity!)p Fp(:)69 b Fl(\(ensure-atomicity)90
b Fo(exp)98 b Fl(...\))68 b Fp(expands)38 b(in)-5 b(to)1478
8141 y Fl(\(call-ensuring-atomicity)91 b(\(lambda)d(\(\))g
Fo(exp)98 b Fl(...\)\))p Fp(;)44 b(lik)-5 b(ewise)37
b(for)g Fl(ensure-atomicity!)1478 8340 y Fp(and)56 b
Fl(call-ensuring-atomicity!)p Fp(.)1511 8618 y Fg(\017)83
b Fl(\(provisional-car)j Fo(p)-8 b(air)18 b Fl(\))82
b Fg(!)h Fo(value)1511 8817 y Fg(\017)g Fl(\(provisional-cdr)j
Fo(p)-8 b(air)18 b Fl(\))82 b Fg(!)h Fo(value)1511 9016
y Fg(\017)g Fl(\(provisional-set-car!)k Fo(p)-8 b(air)82
b(value)12 b Fl(\))1511 9215 y Fg(\017)83 b Fl(\(provisional-set-cdr!)k
Fo(p)-8 b(air)82 b(value)12 b Fl(\))1511 9415 y Fg(\017)83
b Fl(\(provisional-cell-ref)k Fo(c)-8 b(el)8 b(l)17 b
Fl(\))85 b Fg(!)e Fo(value)1511 9614 y Fg(\017)g Fl
(\(provisional-cell-set!)k Fo(c)-8 b(el)8 b(l)85 b(value)12
b Fl(\))1511 9813 y Fg(\017)83 b Fl(\(provisional-vector-ref)k
Fo(ve)-8 b(ctor)84 b(i)17 b Fl(\))83 b Fg(!)g Fo(value)1511
10012 y Fg(\017)g Fl(\(provisional-vector-set!)k Fo(ve)-8
b(ctor)84 b(i)f(value)12 b Fl(\))4259 10511 y Fp(80)p
eop end
%%Page: 81 89
TeXDict begin 81 88 bop 614 1046 a Fg(\017)83 b Fl
(\(provisional-string-ref)k Fo(ve)-8 b(ctor)84 b(i)17
b Fl(\))83 b Fg(!)g Fo(char)614 1245 y Fg(\017)g Fl
(\(provisional-string-set!)88 b Fo(ve)-8 b(ctor)83 b(i)g(char)18
b Fl(\))614 1445 y Fg(\017)83 b Fl(\(provisional-byte-vector-ref)88
b Fo(ve)-8 b(ctor)84 b(i)17 b Fl(\))83 b Fg(!)g Fo(k)614
1644 y Fg(\017)g Fl(\(provisional-byte-vector-set!)88
b Fo(ve)-8 b(ctor)84 b(i)f(k)18 b Fl(\))581 1950 y Fp(These)56
b(are)g(all)g(logging)g(v)-5 b(ersions)57 b(of)e(their)h(Sc)-5
b(heme)56 b(coun)-5 b(terparts.)75 b(Reads)57 b(are)e(c)-5
b(hec)g(k)g(ed)581 2149 y(when)44 b(the)f(curren)-5 b(t)43
b(prop)5 b(osal)44 b(is)h(committed)e(and)h(writes)f(are)g(dela)-5
b(y)g(ed)44 b(un)-5 b(til)44 b(the)f(commit)581 2349
y(succeeds.)104 b(If)65 b(the)f(curren)-5 b(t)65 b(prop)5
b(osal)66 b(is)g Fl(#f)f Fp(these)g(p)5 b(erform)65 b(exactly)f(as)h
(their)g(Sc)-5 b(heme)581 2548 y(coun)g(terparts.)830
2750 y(The)45 b(follo)-5 b(wing)46 b(implemen)-5 b(tation)46
b(of)f(a)g(simple)h(coun)-5 b(ter)45 b(ma)-5 b(y)45 b(not)g(function)g
(prop)5 b(erly)581 2949 y(when)56 b(used)g(b)-5 b(y)55
b(m)-5 b(ultiple)57 b(threads.)581 3291 y Fl(\(define)89
b(\(make-counter\))755 3490 y(\(let)f(\(\(value)h(0\)\))930
3689 y(\(lambda)f(\(\))1104 3889 y(\(set!)g(value)g(\(+)g(value)g
(1\)\))1104 4088 y(value\)\)\))830 4427 y Fp(Here)58
b(is)g(the)g(same)h(pro)5 b(cedure)58 b(using)h(a)g(prop)5
b(osal)59 b(to)e(ensure)i(that)f(eac)-5 b(h)58 b(incremen)-5
b(t)581 4626 y(op)5 b(eration)68 b(happ)5 b(ens)69 b(atomically)-14
b(.)113 b(The)69 b(v)-9 b(alue)67 b(of)i(the)e(coun)-5
b(ter)69 b(is)g(k)-5 b(ept)68 b(in)g(a)h(cell)f(\(see)581
4826 y(section)56 b(5.6\))f(to)g(allo)-5 b(w)56 b(the)f(use)g(of)g
(logging)h(op)5 b(erations.)581 5168 y Fl(\(define)89
b(\(make-counter\))755 5367 y(\(let)f(\(\(value)h(\(make-cell)g
(0\)\)\))930 5566 y(\(lambda)f(\(\))1104 5765 y(\(ensure-atomicity)1279
5965 y(\(lambda)g(\(\))1453 6164 y(\(let)g(\(\(v)f(\(+)h
(\(provisional-cell-ref)j(value\))2499 6363 y(1\)\)\))1627
6562 y(\(provisional-cell-set!)g(value)d(v\))1627 6762
y(v\)\)\)\)\)\))830 7101 y Fp(Because)67 b Fl(ensure-atomicity)k
Fp(creates)c(a)g(new)h(prop)5 b(osal)68 b(only)g(if)f(there)g(is)h(no)g
(ex-)581 7300 y(isting)k(prop)5 b(osal)71 b(in)g(place,)k(m)-5
b(ultiple)72 b(atomic)f(actions)g(can)f(b)5 b(e)71 b(merged)g(in)-5
b(to)71 b(a)g(single)581 7500 y(atomic)e(action.)114
b(F)-14 b(or)69 b(example,)j(the)c(follo)-5 b(wing)70
b(pro)5 b(cedure)68 b(incremen)-5 b(ts)70 b(an)f(arbitrary)581
7699 y(n)-5 b(um)g(b)5 b(er)77 b(of)e(coun)-5 b(ters)76
b(at)g(the)f(same)h(time.)134 b(This)76 b(w)-5 b(orks)76
b(ev)-5 b(en)76 b(if)f(the)g(same)i(coun)-5 b(ter)581
7898 y(app)5 b(ears)48 b(m)-5 b(ultiple)48 b(times;)j
Fl(\(step-counters!)177 b(c0)87 b(c0\))48 b Fp(w)-5 b(ould)48
b(add)g(t)-5 b(w)g(o)47 b(to)g(the)g(v)-9 b(alue)581
8097 y(of)55 b(coun)-5 b(ter)56 b Fl(c0)p Fp(.)581 8439
y Fl(\(define)89 b(\(step-counters!)g(.)f(counters\))755
8639 y(\(ensure-atomicity)930 8838 y(\(lambda)g(\(\))1104
9037 y(\(for-each)h(\(lambda)f(\(counter\))2150 9236
y(\(counter\)\))1976 9436 y(counters\)\)\)\))581 9813
y(\(define-synchronized-record-type)93 b Fo(tag)102 b(typ)-8
b(e-name)755 10012 y Fl(\()p Fo(c)g(onstructor-name)102
b(\014eld-tag)i Fl(...\))3362 10511 y Fp(81)p eop end
%%Page: 82 90
TeXDict begin 82 89 bop 1652 1046 a Fl([\()60 b Fo(\014eld-tag)104
b Fl(...\)])1652 1245 y Fo(pr)-8 b(e)g(dic)g(ate-name)1652
1445 y Fl(\()p Fo(\014eld-tag)104 b(ac)-8 b(c)g(essor-name)100
b Fl([)p Fo(mo)-8 b(di\014er-name)12 b Fl(]\))1652 1644
y(...\))1478 2068 y Fp(This)62 b(is)g(the)f(same)g(as)h
Fl(define-record-type)i Fp(except)d(all)g(\014eld)h(reads)g(and)f
(writes)g(are)1478 2267 y(logged)f(in)h(the)e(curren)-5
b(t)61 b(prop)5 b(osal.)89 b(If)60 b(the)f(optional)i(list)f(of)g
(\014eld)h(tags)f(is)h(presen)-5 b(t)60 b(then)1478 2466
y(only)55 b(those)h(\014elds)g(will)g(b)5 b(e)55 b(logged.)1511
2809 y Fg(\017)83 b Fl(\(call-atomically)j Fo(thunk)18
b Fl(\))84 b Fg(!)f Fo(value\(s\))1511 3008 y Fg(\017)g
Fl(\(call-atomically!)j Fo(thunk)18 b Fl(\))1511 3207
y Fg(\017)83 b Fl(\(atomically)i Fo(exp)94 b Fl(...\))56
b Fg(!)f Fo(value\(s\))2482 b Fp(syn)-5 b(tax)1511 3407
y Fg(\017)83 b Fl(\(atomically!)i Fo(exp)94 b Fl(...\))3244
b Fp(syn)-5 b(tax)1478 3749 y Fl(Call-atomically)39 b
Fp(and)f Fl(call-atomically!)70 b Fp(are)37 b(iden)-5
b(tical)37 b(to)g Fl(call-ensuring-atomicity)1478 3949
y Fp(and)72 b Fl(call-ensuring-atomicity!)127 b Fp(except)70
b(that)h(they)g(alw)-5 b(a)g(ys)73 b(install)f(a)g(new)g(pro-)1478
4148 y(p)5 b(osal)73 b(b)5 b(efore)72 b(calling)k Fl(thunk)p
Fp(.)127 b(The)73 b(curren)-5 b(t)73 b(prop)5 b(osal)74
b(is)f(sa)-5 b(v)g(ed)74 b(and)g(then)e(restored)1478
4347 y(after)f Fl(thunk)i Fp(returns.)125 b Fl(Call-atomically)75
b Fp(and)e Fl(Call-atomically!)127 b Fp(are)72 b(useful)g(if)1478
4546 y Fl(thunk)56 b Fp(con)-5 b(tains)56 b(co)5 b(de)55
b(that)g(is)h(not)f(to)g(b)5 b(e)55 b(com)-5 b(bined)57
b(with)e(an)-5 b(y)55 b(other)g(op)5 b(eration.)1727
4760 y Fl(Atomically)51 b Fp(and)g Fl(atomically!)73
b Fp(are)50 b(macro)g(v)-5 b(ersions)51 b(of)62 b Fl(call-atomically)53
b Fp(and)1478 4959 y Fl(call-atomically!)p Fp(:)87 b
Fl(\(atomically)i Fo(exp)98 b Fl(...\))90 b Fp(expands)61
b(in)-5 b(to)61 b Fl(\(call-atomically)1478 5159 y(\(lambda)88
b(\(\))g Fo(exp)98 b Fl(...\)\))p Fp(;)56 b(lik)-5 b(ewise)56
b(for)f Fl(atomically!)76 b Fp(and)55 b Fl(call-atomically!)p
Fp(.)1511 5501 y Fg(\017)83 b Fl(\(with-new-proposal)j(\()p
Fo(lose)12 b Fl(\))85 b Fo(exp)93 b Fl(...\))56 b Fg(!)g
Fo(value)k(.)25 b(.)g(.)1271 b Fp(syn)-5 b(tax)1727 5844
y Fl(With-new-proposal)51 b Fp(sa)-5 b(v)g(es)50 b(the)e(curren)-5
b(t)49 b(prop)5 b(osal,)50 b(installs)g(a)f(new)f(one,)i(executes)1478
6043 y(the)k(forms)h(in)g(the)f(b)5 b(o)g(dy)-14 b(,)55
b(and)g(returns)g(whatev)-5 b(er)54 b(they)g(returns.)74
b(It)54 b(also)h(binds)h Fo(lose)68 b Fp(to)1478 6243
y(a)54 b(th)-5 b(unk)55 b(rep)5 b(eating)53 b(the)h(pro)5
b(cedure)54 b(of)g(installing)i(a)e(new)g(pro)5 b(cedure)54
b(and)h(running)h(the)1478 6442 y(b)5 b(o)g(dy)-14 b(.)74
b(T)-5 b(ypically)-14 b(,)55 b(the)h(b)5 b(o)g(dy)54
b(will)i(call)g Fl(maybe-commit)h Fp(and,)f(if)g(that)f(fails,)h(call)f
Fo(lose)69 b Fp(to)1478 6641 y(try)54 b(again.)1727 6855
y(The)65 b(follo)-5 b(wing)65 b(pro)5 b(cedures)66 b(giv)-5
b(e)65 b(access)g(to)f(the)h(lo)-5 b(w-lev)g(el)66 b(prop)5
b(osal)65 b(mec)-5 b(hanism.)1478 7054 y(They)55 b(are)g(de\014ned)h
(in)g(the)f Fl(low-proposals)i Fp(structure.)1511 7430
y Fg(\017)83 b Fl(\(maybe-commit\))i Fg(!)f Fo(b)-8 b(o)g(ole)g(an)1511
7629 y Fg(\017)83 b Fl(\(make-proposal\))j Fg(!)d Fo(pr)-8
b(op)g(osal)1511 7829 y Fg(\017)83 b Fl(\(current-proposal\))j
Fg(!)d Fo(pr)-8 b(op)g(osal)1511 8028 y Fg(\017)83 b
Fl(\(set-current-proposal!)k Fo(pr)-8 b(op)g(osal)17
b Fl(\))1478 8404 y(Maybe-commit)73 b Fp(v)-5 b(eri\014es)72
b(that)e(an)-5 b(y)72 b(reads)g(logged)f(in)h(the)e(curren)-5
b(t)72 b(prop)5 b(osal)72 b(are)f(still)1478 8603 y(v)-9
b(alid)57 b(and,)i(if)f(so,)g(p)5 b(erforms)58 b(an)-5
b(y)58 b(writes)g(that)f(it)g(con)-5 b(tains.)82 b(A)57
b(logged)h(read)g(is)g(v)-9 b(alid)57 b(if,)1478 8802
y(at)39 b(the)g(time)g(of)g(the)g(commit,)k(the)c(lo)5
b(cation)39 b(read)h(con)-5 b(tains)40 b(the)f(same)i(v)-9
b(alue)39 b(it)g(had)h(at)f(the)1478 9002 y(time)50 b(of)g(the)h
(original)g(read)f(\(note)g(that)g(this)h(do)5 b(es)51
b(not)f(mean)h(that)f(no)h(c)-5 b(hange)51 b(o)5 b(ccured,)1478
9201 y(simply)45 b(that)e(the)h(v)-9 b(alue)44 b(no)-5
b(w)45 b(is)f(the)g(same)h(as)g(the)e(v)-9 b(alue)44
b(then\).)70 b Fl(Maybe-commit)46 b Fp(returns)1478 9400
y Fl(#t)55 b Fp(if)h(the)f(commit)g(succeeds)h(and)g
Fl(#f)g Fp(if)f(it)g(fails.)1727 9614 y Fl(Make-proposal)39
b Fp(creates)d(a)h(new)g(prop)5 b(osal.)69 b Fl(Current-proposal)39
b Fp(and)f Fl(set-current-proposal)1478 9813 y Fp(access)f(and)h(set)e
(the)h(curren)-5 b(t)37 b(thread's)g(prop)5 b(osal.)69
b(It)36 b(is)i(an)f(error)g(to)f(pass)i(to)f Fl(set-current-proposal!)
1478 10012 y Fp(a)55 b(prop)5 b(osal)56 b(that)f(is)h(already)f(in)h
(use.)4259 10511 y(82)p eop end
%%Page: 83 91
TeXDict begin 83 90 bop 581 1046 a Fi(7.5)270 b(Condition)91
b(v)-15 b(ariables)581 1460 y Fo(Condition)61 b(variables)72
b Fp(\(de\014ned)57 b(in)g(the)g Fl(condvars)h Fp(structure\))e(allo)-5
b(w)58 b(threads)f(p)5 b(erform)581 1660 y(condition)73
b(sync)-5 b(hronization:)111 b(It)72 b(allo)-5 b(ws)74
b(threads)f(to)g(blo)5 b(c)-5 b(k,)77 b(w)-5 b(aiting)74
b(for)e(a)h(sp)5 b(eci\014ed)581 1859 y(condition|asso)g(ciated)48
b(with)f(a)g(condition)g(v)-9 b(ariable|to)46 b(o)5 b(ccur,)49
b(and)e(other)g(threads)g(to)581 2058 y(w)-5 b(ak)g(e)56
b(up)f(the)g(w)-5 b(aiting)56 b(threads)g(when)g(the)f(condition)g(is)h
(ful\014lled.)830 2284 y(Note)h(that,)g(in)h(Sc)-5 b(heme)58
b(48,)h(condition)f(v)-9 b(ariables)58 b(w)-5 b(ork)57
b(in)h(conjunction)g(with)f(pro-)581 2484 y(p)5 b(osals,)59
b(not)e(with)h(m)-5 b(utex)57 b(lo)5 b(c)-5 b(ks)58 b(or)f(semaphores,)
j(as)d(in)h(most)g(other)f(implemen)-5 b(tations)581
2683 y(of)55 b(this)h(concept.)614 3063 y Fg(\017)83
b Fl(\(make-condvar\))j Fg(!)d Fo(c)-8 b(ondvar)614 3263
y Fg(\017)83 b Fl(\(make-condvar)j Fo(id)17 b Fl(\))83
b Fg(!)g Fo(c)-8 b(ondvar)614 3462 y Fg(\017)83 b Fl(\(condvar?)102
b Fo(thing)15 b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)614
3661 y Fg(\017)83 b Fl(\(set-condvar-has-value?!)88 b
Fo(c)-8 b(ondvar)83 b(b)-8 b(o)g(ole)g(an)13 b Fl(\))614
3860 y Fg(\017)83 b Fl(\(condvar-has-value?)104 b Fo(c)-8
b(ondvar)18 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614
4060 y Fg(\017)83 b Fl(\(set-condvar-value!)k Fo(c)-8
b(ondvar)83 b(value)12 b Fl(\))614 4259 y Fg(\017)83
b Fl(\(condvar-value)j Fo(c)-8 b(ondvar)18 b Fl(\))83
b Fg(!)g Fo(value)614 4458 y Fg(\017)g Fl
(\(maybe-commit-and-wait-for-condvar)89 b Fo(c)-8 b(ondvar)18
b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)614 4657 y
Fg(\017)83 b Fl(\(maybe-commit-and-set-condvar!)106 b
Fo(c)-8 b(ondvar)83 b(value)12 b Fl(\))85 b Fg(!)e Fo(b)-8
b(o)g(ole)g(an)581 5038 y Fl(Make-condvar)61 b Fp(creates)d(a)g
(condition)h(v)-9 b(ariable.)84 b(\(The)58 b(optional)h
Fo(id)75 b Fp(argumen)-5 b(t)59 b(is)h(only)581 5237
y(for)80 b(debugging)i(purp)5 b(oses;)94 b(the)80 b(discloser)h(for)f
(condition)h(v)-9 b(ariables)80 b(prin)-5 b(ts)82 b(it)e(out)g(if)581
5436 y(presen)-5 b(t.\))74 b Fl(Condvar?)h Fp(is)56 b(the)f(predicate)g
(for)g(condition)h(v)-9 b(ariables.)830 5663 y(Eac)k(h)56
b(condition)f(v)-9 b(ariable)55 b(has)g(an)h(asso)5 b(ciated)55
b(v)-9 b(alue)54 b(and)i(a)f(\015ag)i Fl(has-value?)76
b Fp(sig-)581 5862 y(nalling)38 b(if)f(the)f(condition)i(has)f(already)
g(o)5 b(ccured.)67 b(The)37 b(accessor)h(for)e(\015ag)h(is)h
Fl(condvar-has-value?)p Fp(;)581 6061 y Fl(set-condvar-has-value?!)144
b Fp(sets)78 b(it.)140 b(Both)77 b(are)h(pro)-5 b(visional)79
b(op)5 b(erations)78 b(and)g(go)581 6260 y(through)59
b(the)f(curren)-5 b(t)58 b(prop)5 b(osal.)83 b Fl(Set-condvar-value!)j
Fp(sets)59 b(the)f(v)-9 b(alue)57 b(of)h(the)g(con-)581
6460 y(dition)e(v)-9 b(ariable)55 b(\(pro)-5 b(visionally\),)56
b(and)g Fl(condvar-value)h Fp(extracts)e(it.)830 6686
y Fl(Maybe-commit-and-wait-for-condvar)43 b Fp(attempts)36
b(to)h(commit)g(the)g(curren)-5 b(t)37 b(pro-)581 6885
y(p)5 b(osal.)101 b(If)63 b(the)h(commit)g(succeeds,)j(it)d(susp)5
b(ends)66 b(the)e(curren)-5 b(t)64 b(thread)g(and)h(registers)f(it)581
7085 y(with)37 b(the)f Fo(c)-8 b(ondvar)55 b Fp(condition)38
b(v)-9 b(ariable.)67 b(Up)5 b(on)37 b(w)-5 b(aking)37
b(up)h(again)f Fl(maybe-commit-and-wait-for-condvar)581
7284 y Fp(returns)56 b Fl(#t)p Fp(,)g(If)f(the)g(commit)g(fails,)h
Fl(maybe-commit-and-set-condvar)61 b Fp(returns)55 b
Fl(#f)p Fp(.)830 7510 y Fl(Maybe-commit-and-set-condvar!)97
b Fp(sets)62 b(the)f(v)-9 b(alue)61 b(of)g(the)g Fo(c)-8
b(ondvar)79 b Fp(condition)581 7710 y(v)-9 b(ariable)60
b(to)f Fo(value)12 b Fp(,)62 b(\(pro)-5 b(visionally\))61
b(sets)f(the)f Fl(has-value?)88 b Fp(\015ag)60 b(to)g
Fl(#t)p Fp(,)h(and)f(then)g(at-)581 7909 y(tempt)48 b(to)f(commit)i
(the)e(curren)-5 b(t)48 b(prop)5 b(osal.)73 b(Up)5 b(on)47
b(success,)k(it)d(w)-5 b(ak)g(es)48 b(up)h(all)f(susp)5
b(ended)581 8108 y(threads)56 b(registered)f(with)g Fo(c)-8
b(ondvar)74 b Fp(and)56 b(returns)f Fl(#t)p Fp(,)h(otherwise,)g(it)f
(returns)h Fl(#f)p Fp(.)581 8801 y Fi(7.6)270 b(Mutual)90
b(exclusion)581 9215 y Fp(Sc)-5 b(heme)55 b(48)f(also)g(has)h(more)f
(traditional)g(m)-5 b(utual-exclusion)56 b(sync)-5 b(hronization)55
b(abstrac-)581 9415 y(tions,)71 b(sp)5 b(eci\014cally)68
b(m)-5 b(utex)68 b(lo)5 b(c)-5 b(ks)67 b(and)h(placeholders.)112
b(Note)66 b(that)h(t)-5 b(ypically)67 b(sync)-5 b(hro-)581
9614 y(nization)41 b(via)g(optimistic)h(concurrency)f(is)g(usually)h
(preferable:)67 b(Mutual)42 b(exclusion)f(often)581 9813
y(puts)i(the)e(running)j(program)f(in)-5 b(to)42 b(an)g(inconsisten)-5
b(t)44 b(state)d(for)h(the)g(time)g(of)f(the)h(inclusion,)581
10012 y(whic)-5 b(h)56 b(has)g(adv)-5 b(erse)56 b(e\013ects)f(on)g(mo)5
b(dularit)-5 b(y)56 b(and)g(in)-5 b(terruptibilit)g(y)-14
b(.)3362 10511 y(83)p eop end
%%Page: 84 92
TeXDict begin 84 91 bop 1478 1046 a Fc(7.6.1)225 b(Lo)6
b(c)-6 b(ks)1478 1353 y Fp(The)55 b Fl(locks)h Fp(structure)f(con)-5
b(tains)57 b(bindings)g(that)e(implemen)-5 b(t)56 b(standard)g(m)-5
b(utex)56 b(lo)5 b(c)-5 b(ks:)1511 1681 y Fg(\017)83
b Fl(\(make-lock\))i Fg(!)e Fo(lo)-8 b(ck)1511 1880 y
Fg(\017)83 b Fl(\(lock?)101 b Fo(thing)15 b Fl(\))84
b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)1511 2080 y Fg(\017)83
b Fl(\(obtain-lock)i Fo(lo)-8 b(ck)18 b Fl(\))1511 2279
y Fg(\017)83 b Fl(\(maybe-obtain-lock)j Fo(lo)-8 b(ck)18
b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)1511 2478
y Fg(\017)83 b Fl(\(release-lock)i Fo(lo)-8 b(ck)18 b
Fl(\))1478 2807 y(Make-lock)71 b Fp(creates)d(a)i(lo)5
b(c)-5 b(k)68 b(in)i(the)f(\\released")h(state.)115 b
Fl(Lock?)h Fp(is)70 b(the)f(predicate)g(for)1478 3006
y(lo)5 b(c)-5 b(ks.)1727 3205 y Fl(Obtain-lock)53 b Fp(atomically)d(c)
-5 b(hec)g(ks)52 b(if)64 b Fo(lo)-8 b(ck)69 b Fp(is)52
b(in)f(the)g(\\released")g(state.)72 b(If)50 b(it)h(is,)i(the)1478
3404 y(lo)5 b(c)-5 b(k)52 b(is)h(put)f(in)-5 b(to)53
b(the)f(\\obtained")g(state,)h(and)f Fl(obtain-lock)j
Fp(returns)d(immediately)-14 b(.)74 b(If)1478 3604 y(the)36
b(lo)5 b(c)-5 b(k)37 b(is)h(in)f(the)g(\\obtained")g(state,)k(the)36
b(curren)-5 b(t)38 b(thread)f(is)g(susp)5 b(ended)39
b(and)e(registered)1478 3803 y(with)51 b(the)g(lo)5 b(c)-5
b(k.)72 b Fl(Maybe-obtain-lock)p Fp(,)55 b(lik)-5 b(e)51
b Fl(obtain-lock)p Fp(,)j(c)-5 b(hec)g(ks)52 b(the)e(state)h(of)64
b Fo(lo)-8 b(ck)18 b Fp(:)1478 4002 y(if)58 b(it)h(is)g(\\released,")h
(the)e(lo)5 b(c)-5 b(k)58 b(is)h(put)g(in)-5 b(to)59
b(the)f(\\obtained")h(state,)g(if)f(it)h(is)g(\\obtained,")1478
4201 y Fl(maybe-obtain-lock)h Fp(returns)e(immediately)-14
b(.)80 b Fl(Maybe-obtain-lock)60 b Fp(returns)e Fl(#t)f
Fp(if)h(it)1478 4401 y(w)-5 b(as)56 b(able)g(to)e(obtain)i(the)f(lo)5
b(c)-5 b(k,)55 b(and)h Fl(#f)g Fp(otherwise.)1727 4600
y Fl(Release-lock)80 b Fp(do)5 b(es)77 b(nothing)i(if)90
b Fo(lo)-8 b(ck)96 b Fp(is)78 b(in)g(the)g(\\released")g(state.)140
b(If)77 b(it)h(is)g(in)1478 4799 y(the)50 b(\\obtained")i(state,)f
Fl(release-lock)i Fp(causes)f(one)f(of)g(the)g(threads)g(susp)5
b(ended)53 b(on)e(an)1478 4998 y Fl(obtain-lock)71 b
Fp(lo)5 b(c)-5 b(k)70 b(op)5 b(eration)69 b(to)g(con)-5
b(tin)g(ue)71 b(execution.)116 b(If)70 b(that)f(thread)g(is)i(the)e
(last)1478 5198 y(thread)60 b(registered)g(with)h(the)f(lo)5
b(c)-5 b(k,)61 b(the)f(lo)5 b(c)-5 b(k)60 b(is)h(transferred)f(to)g
(the)g(\\released")h(state.)1478 5397 y(In)55 b(an)-5
b(y)56 b(case,)g Fl(release-lock)h Fp(returns)f(immediately)-14
b(.)1478 5861 y Fc(7.6.2)225 b(Placeholders)1478 6167
y Fp(The)73 b Fl(placeholders)j Fp(structure)e(con)-5
b(tains)74 b(bindings)i(for)d Fo(plac)-8 b(eholders)14
b Fp(|thread-safe,)1478 6367 y(write-once)55 b(v)-9 b(ariables,)56
b(akin)f(to)g(ID-90)g(I-structures)h(or)g(CML)f(I-v)-9
b(ariables.)1727 6566 y(The)71 b(t)-5 b(ypical)72 b(scenario)g(for)f
(placeholders)h(is)g(that,)j(sa)-5 b(y)-14 b(,)77 b(a)71
b(thread)g(A)g(computes)h(a)1478 6765 y(v)-9 b(alue)47
b(needed)g(b)-5 b(y)47 b(another)g(thread)g(B)g(at)g(some)h(unsp)5
b(eci\014ed)48 b(time.)71 b(Both)46 b(threads)i(share)1478
6964 y(access)66 b(to)f(a)g(placeholder;)71 b(when)66
b(A)e(has)j(computed)e(the)g(v)-9 b(alue,)68 b(it)d(places)h(it)f(in)-5
b(to)66 b(the)1478 7164 y(placeholder.)81 b(When)58 b(B)f(needs)h(the)f
(v)-9 b(alue,)58 b(it)g(extracts)e(it)i(from)f(placeholder,)i(blo)5
b(c)-5 b(king)1478 7363 y(if)55 b(necessary)-14 b(.)1511
7691 y Fg(\017)83 b Fl(\(make-placeholder\))j Fg(!)d
Fo(plac)-8 b(eholder)1511 7891 y Fg(\017)83 b Fl(\(make-placeholder)j
Fo(id)17 b Fl(\))83 b Fg(!)g Fo(plac)-8 b(eholder)1511
8090 y Fg(\017)83 b Fl(\(placeholder?)102 b Fo(thing)15
b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)1511 8289
y Fg(\017)83 b Fl(\(placeholder-set!)j Fo(plac)-8 b(eholder)84
b(value)12 b Fl(\))1511 8488 y Fg(\017)83 b Fl(\(placeholder-value)j
Fo(plac)-8 b(eholder)18 b Fl(\))84 b Fg(!)f Fo(value)1478
8817 y Fl(Make-placeholder)68 b Fp(creates)c(an)h(empt)-5
b(y)65 b(placeholder.)104 b(\(The)64 b(optional)i Fo(id)82
b Fp(argumen)-5 b(t)1478 9016 y(is)74 b(only)g(for)g(debugging)g(purp)5
b(oses;)85 b(the)73 b(discloser)i(for)f(placeholders)g(prin)-5
b(ts)75 b(it)f(out)f(if)1478 9215 y(presen)-5 b(t.\))74
b Fl(Placeholder?)i Fp(is)56 b(the)f(predicate)g(for)g(placeholders.)
1727 9415 y Fl(Placeholder-set!)76 b Fp(places)53 b(a)g(v)-9
b(alue)53 b(in)-5 b(to)53 b(a)g(placeholder.)73 b(Doing)54
b(this)f(more)g(than)1478 9614 y(once)65 b(signals)i(an)f(error.)105
b Fl(Placeholder-value)68 b Fp(extracts)d(the)g(v)-9
b(alue)65 b(from)h(the)f(place-)1478 9813 y(holder)59
b(and)h(returns)f(it.)84 b(If)59 b(the)f(placeholder)i(is)f(empt)-5
b(y)-14 b(,)60 b(it)f(blo)5 b(c)-5 b(ks)59 b(the)f(curren)-5
b(t)59 b(thread)1478 10012 y(un)-5 b(til)56 b(it)f(b)5
b(ecomes)55 b(full.)4259 10511 y(84)p eop end
%%Page: 85 93
TeXDict begin 85 92 bop 581 1046 a Fi(7.7)270 b(W)-22
b(riting)59 b(custom)h(sync)-7 b(hronization)60 b(abstractions)581
1410 y Fp(The)49 b(bindings)i(explained)e(in)g(this)g(section)g(are)g
(part)f(of)h(the)g Fl(threads-internal)i Fp(struc-)581
1609 y(ture.)83 b(They)58 b(are)g(concerned)g(with)h(susp)5
b(ending)60 b(threads)f(and)g(making)f(them)h(runnable)581
1808 y(again)d(up)5 b(on)56 b(some)g(later)f(ev)-5 b(en)g(t.)830
2008 y(T)g(ypically)-14 b(,)67 b(a)d(susp)5 b(ended)66
b(thread)e(needs)h(to)f(b)5 b(e)64 b(recorded)g(in)h(a)f(queue)g
(somewhere)581 2207 y(for)c(later)f(w)-5 b(aking-up.)88
b(T)-14 b(o)60 b(allo)-5 b(w)60 b(a)g(thread)f(to)h(b)5
b(e)59 b(recorded)h(in)g(m)-5 b(ultiple)60 b(queues)g(\(sa)-5
b(y)-14 b(,)581 2406 y(when)62 b(it)g(w)-5 b(aits)63
b(for)f(one)g(of)g(a)g(n)-5 b(um)g(b)5 b(er)64 b(of)d(ev)-5
b(en)g(ts\),)64 b(suc)-5 b(h)64 b Fo(thr)-8 b(e)g(ad)64
b(queues)77 b Fp(are)62 b(ordinary)581 2605 y(queues)76
b(con)-5 b(taining)77 b(cells)f(that,)81 b(in)76 b(turn,)81
b(con)-5 b(tain)77 b(the)e(thread)h(ob)9 b(jects)76 b(themselv)-5
b(es.)581 2805 y(Eac)g(h)51 b(thread)f(has)g(at)g(most)h(one)f(suc)-5
b(h)51 b(cell)f(asso)5 b(ciated)50 b(with)g(it)g(whic)-5
b(h)50 b(is)h(shared)g(among)581 3004 y(all)59 b(queues)g(\(or)g(other)
f(data)h(structures\))g(holding)g(on)g(to)g(the)f(susp)5
b(ended)60 b(thread.)85 b(The)581 3203 y(cell)55 b(is)h(cleared)f(when)
h(the)f(thread)g(is)h(w)-5 b(ok)g(en)56 b(up.)614 3532
y Fg(\017)83 b Fl(\(thread-queue-empty?)104 b Fo(thr)-8
b(e)g(ad-queue)12 b Fl(\))84 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614
3731 y Fg(\017)83 b Fl(\(maybe-dequeue-thread!)104 b
Fo(thr)-8 b(e)g(ad-queue)12 b Fl(\))85 b Fg(!)e Fo(b)-8
b(o)g(ole)g(an)581 4060 y Fl(Thread-queue-empty?)71 b
Fp(atomically)37 b(c)-5 b(hec)g(ks)37 b(whether)g(the)f
Fo(thr)-8 b(e)g(ad-queue)51 b Fp(thread)36 b(queue)581
4259 y(is)60 b(empt)-5 b(y)-14 b(,)60 b(i.e.,)h(if)e(it)g(do)5
b(es)59 b(not)g(con)-5 b(tain)60 b(non-empt)-5 b(y)60
b(cells.)86 b Fl(Maybe-dequeue-thread!)581 4458 y Fp(pro)-5
b(visionally)55 b(dequeues)e(a)h(thread)f(from)h Fo(thr)-8
b(e)g(ad-queue)66 b Fp(if)54 b(it)f(con)-5 b(tains)54
b(one.)73 b(It)53 b(returns)581 4657 y(the)i(dequeued)g(thread)h(or)f
Fl(#f)h Fp(if)f(the)g(queue)g(is)h(empt)-5 b(y)-14 b(.)614
4986 y Fg(\017)83 b Fl(\(maybe-commit-and-block)k Fo(c)-8
b(el)8 b(l)17 b Fl(\))85 b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)614
5185 y Fg(\017)83 b Fl(\(maybe-commit-and-block-on-queue)89
b Fo(thr)-8 b(e)g(ad-queue)12 b Fl(\))85 b Fg(!)e Fo(b)-8
b(o)g(ole)g(an)614 5384 y Fg(\017)83 b Fl
(\(maybe-commit-and-make-ready)88 b Fo(thr)-8 b(e)g(ad-or-queue)12
b Fl(\))85 b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)581 5713 y
Fl(Maybe-commit-and-block)81 b Fp(attempts)c(to)g(commit)g(the)g
(curren)-5 b(t)77 b(prop)5 b(osal.)140 b(If)77 b(this)581
5912 y(succeeds,)66 b(the)c(curren)-5 b(t)63 b(thread)g(is)h(blo)5
b(c)-5 b(k)g(ed,)65 b(the)e(thread's)g(cell)g(is)h(set)f(to)f
Fo(c)-8 b(el)8 b(l)17 b Fp(,)67 b(and)c Fl(#t)581 6112
y Fp(is)54 b(returned.)73 b(Otherwise,)53 b Fl(#f)g Fp(is)h(returned.)
73 b Fl(Maybe-commit-and-block-on-queue)58 b Fp(is)581
6311 y(lik)-5 b(e)45 b Fl(maybe-commit-and-block)p Fp(,)52
b(excepts)44 b(that)h(it)g(creates)f(a)h(fresh)h(cell)f(for)g(the)g
(thread)581 6510 y(and)56 b(enqueues)g(it)f(in)g Fo(thr)-8
b(e)g(ad-queue)69 b Fp(if)55 b(the)g(commit)h(succeeds.)830
6709 y Fl(Maybe-commit-and-make-ready)65 b Fp(accepts)60
b(either)f(a)h(thread)g(ob)9 b(ject)60 b(or)g(a)g(thread)581
6909 y(queue)c(as)h(an)f(argumen)-5 b(t.)77 b(In)56 b(either)g(case,)g
Fl(maybe-commit-and-make-ready)61 b Fp(tries)56 b(to)581
7108 y(commit)37 b(the)g(curren)-5 b(t)37 b(prop)5 b(osal.)68
b(If)37 b(that)f(succeeds,)42 b(it)36 b Fl(maybe-commit-and-make-ready)
581 7307 y Fp(mak)-5 b(es)41 b(its)f(argumen)-5 b(t)41
b(runnable:)67 b(if)53 b Fo(thr)-8 b(e)g(ad-or-queue)53
b Fp(is)41 b(a)f(thread,)j(that)d(thread)g(is)g(made)581
7506 y(runnable,)65 b(if)e(it)f(is)h(a)f(thread)g(queue,)i(all)f
(threads)g(on)f(the)g(queue)h(are)f(made)h(runnable.)581
7706 y(\(In)d(the)g(latter)f(case,)j(none)f(of)f(the)f(threads)i
(actually)f(runs)h(un)-5 b(til)61 b(all)g(ha)-5 b(v)g(e)60
b(b)5 b(een)60 b(made)581 7905 y(runnable.\))74 b Fl
(Marybe-commit-and-make-ready)57 b Fp(returns)c Fl(#t)g
Fp(if)f(it)g(succeeded,)h(and)g Fl(#f)581 8104 y Fp(otherwise.)581
8653 y Fi(7.8)270 b(Concurren)-7 b(t)90 b(ML)f(abstractions)581
9016 y Fp(The)51 b(in)-5 b(terface)50 b(to)h(the)f(Concurren)-5
b(t)51 b(ML)g(abstractions)h(in)f(Sc)-5 b(heme)51 b(48)g(is)h(mostly)f
(analo-)581 9215 y(gous)56 b(to)e(the)g(original)i(implemen)-5
b(tation)55 b(shipp)5 b(ed)56 b(with)f(SML/NJ)f([9].)74
b(Note)54 b(that)g(b)5 b(oth)581 9415 y(the)55 b(in)-5
b(terface)55 b(and)h(implemen)-5 b(tation)56 b(are)f(new)h(and)g(ma)-5
b(y)55 b(c)-5 b(hange)56 b(in)g(future)f(releases.)830
9614 y(The)47 b(main)g(terminological)g(di\013erence)f(is)i(that)e(CML)
g(ev)-5 b(en)g(ts)47 b(are)f(called)h Fo(r)-8 b(endezvous)581
9813 y Fp(in)64 b(Sc)-5 b(heme)64 b(48.)99 b(F)-14 b(or)64
b(more)g(information)g(on)g(programming)h(with)e(the)h(CML)f(abstrac-)
581 10012 y(tions,)56 b(Repp)-5 b(y's)57 b(b)5 b(o)g(ok)54
b([9])i(is)g(recommended.)3362 10511 y(85)p eop end
%%Page: 86 94
TeXDict begin 86 93 bop 1478 1046 a Fc(7.8.1)225 b(Basic)75
b(rendezv)-6 b(ous)74 b(com)-6 b(binators)1478 1357 y
Fp(The)55 b(basic)h(rendezv)-5 b(ous)56 b(com)-5 b(binators)57
b(liv)-5 b(e)55 b(in)h(the)f Fl(rendezvous)i Fp(structure.)1511
1696 y Fg(\017)83 b Fl(never-rv)4039 b Fp(rendezv)-5
b(ous)1511 1896 y Fg(\017)83 b Fl(\(always-rv)i Fo(value)12
b Fl(\))85 b Fg(!)e Fo(r)-8 b(endezvous)1478 2235 y Fl(Never-rv)63
b Fp(is)f(a)g(rendezv)-5 b(ous)62 b(that)g(is)g(nev)-5
b(er)62 b(enabled)g(for)f(sync)-5 b(hronization.)94 b(\(It)61
b(is)i(the)1478 2434 y(same)80 b(as)f(the)g Fl(never)h
Fp(ev)-5 b(en)g(t)78 b(in)i(CML.\))e Fl(Always-rv)j Fp(returns)e(a)h
(rendezv)-5 b(ous)79 b(that)g(is)1478 2634 y(elw)-5 b(a)g(ys)78
b(enabled)g(for)f(sync)-5 b(hronization,)84 b(and)78
b(alw)-5 b(a)g(ys)79 b(yields)e(the)g(same)i(v)-9 b(alue)77
b Fo(value)12 b Fp(.)1478 2833 y(\(This)55 b(is)h(the)f(same)h(as)g
(the)f Fl(alwaysEvt)i Fp(function)f(in)f(CML.\))1511
3172 y Fg(\017)83 b Fl(\(choose)h Fo(r)-8 b(endezvous)84
b(.)25 b(.)g(.)g Fl(\))103 b Fg(!)83 b Fo(r)-8 b(endezvous)1478
3512 y Fl(Choose)52 b Fp(creates)e(a)h(rendezv)-5 b(ous)52
b(represen)-5 b(ting)52 b(the)e(c)-5 b(hoice)52 b(of)e(its)h(argumen)-5
b(ts:)73 b(Sync)-5 b(hro-)1478 3711 y(nization)61 b(on)h(the)f
(resulting)i(rendezv)-5 b(ous)62 b(will)g(sync)-5 b(hronize)62
b(on)g(one)g(of)f(the)g(argumen)-5 b(ts)1478 3910 y(to)53
b Fl(choose)p Fp(,)h(dep)5 b(ending)54 b(on)g(whic)-5
b(h)53 b(b)5 b(ecomes)54 b(enabled)f(\014rst.)74 b(\(This)54
b(is)f(the)g(same)h(as)g(the)1478 4109 y Fl(choose)i
Fp(function)g(in)f(CML.\))1511 4449 y Fg(\017)83 b Fl(\(wrap)h
Fo(r)-8 b(endezvous)84 b(pr)-8 b(o)g(c)9 b Fl(\))82 b
Fg(!)h Fo(r)-8 b(endezvous)1478 4788 y Fl(Wrap)77 b Fp(wraps)f(a)h(p)5
b(ost-sync)-5 b(hronization)77 b(pro)5 b(cedure)76 b(around)h
Fo(r)-8 b(endezvous)14 b Fp(:)116 b(When)76 b(the)1478
4987 y(resulting)51 b(rendezv)-5 b(ous)52 b(is)f(sync)-5
b(hronized,)53 b Fo(r)-8 b(endezvous)65 b Fp(is)52 b(sync)-5
b(hronized,)53 b(and)e(the)g(v)-9 b(alue)1478 5187 y(it)60
b(yields)h(is)h(passed)g(to)e Fo(pr)-8 b(o)g(c)9 b Fp(;)63
b(the)d(v)-9 b(alue)61 b(returned)f(b)-5 b(y)64 b Fo(pr)-8
b(o)g(c)69 b Fp(then)61 b(is)g(the)f(result)h(of)g(the)1478
5386 y(sync)-5 b(hronization.)75 b(\(This)55 b(is)h(the)f(same)h(as)g
(the)f(CML)g Fl(wrap)i Fp(function.\))1511 5725 y Fg(\017)83
b Fl(\(guard)h Fo(thunk)18 b Fl(\))84 b Fg(!)f Fo(r)-8
b(endezvous)1478 6065 y Fl(Guard)48 b Fp(dela)-5 b(ys)48
b(the)e(creation)h(of)g(a)g(rendezv)-5 b(ous)48 b(un)-5
b(til)47 b(sync)-5 b(hronization)49 b(time:)69 b(It)47
b(returns)1478 6264 y(a)e(rendezv)-5 b(ous)46 b(that)e(will,)k(up)5
b(on)46 b(sync)-5 b(hronization,)48 b(turn)d(in)-5 b(to)46
b(the)e(rendezv)-5 b(ous)46 b(returned)1478 6463 y(b)-5
b(y)70 b Fo(thunk)18 b Fp(.)112 b Fl(Guard)69 b Fp(can)f(b)5
b(e)68 b(used)g(to)g(p)5 b(erform)67 b(pre-sync)-5 b(hronization)70
b(actions)e(suc)-5 b(h)69 b(as)1478 6662 y(resource)55
b(allo)5 b(cation.)74 b(\(This)56 b(is)g(the)f(same)h(as)g(the)e(CML)i
Fl(guard)g Fp(function.\))1511 7002 y Fg(\017)83 b Fl(\(with-nack)i
Fo(pr)-8 b(o)g(c)9 b Fl(\))83 b Fg(!)g Fo(r)-8 b(endezvous)1478
7341 y Fl(With-nack)p Fp(,)44 b(lik)-5 b(e)40 b Fl(guard)p
Fp(,)k(creates)c(a)g(dela)-5 b(y)g(ed)40 b(rendezv)-5
b(ous:)67 b(Up)5 b(on)40 b(sync)-5 b(hronization,)44
b(the)1478 7540 y(rendezv)-5 b(ous)60 b(actually)f(used)h(is)f(the)g
(one)h(returned)f(b)-5 b(y)62 b Fo(pr)-8 b(o)g(c)9 b
Fp(.)85 b(In)59 b(addition)h(to)f(the)g(func-)1478 7740
y(tionalit)-5 b(y)65 b(o\013ered)g(b)-5 b(y)68 b Fl(guard)p
Fp(,)g Fo(pr)-8 b(o)g(c)74 b Fp(receiv)-5 b(es,)68 b(as)d(an)h(argumen)
-5 b(t,)68 b(another)e(rendezv)-5 b(ous)1478 7939 y(whic)g(h)61
b(b)5 b(ecomes)60 b(enabled)g(when)h Fo(another)78 b
Fp(rendezv)-5 b(ous)61 b(in)-5 b(v)g(olv)g(ed)61 b(in)f(the)g(sync)-5
b(hroniza-)1478 8138 y(tion)64 b(\(via)g Fl(choose)p
Fp(\))i(is)f(pic)-5 b(k)g(ed)65 b(instead)g(of)g(the)f(one)h(pro)5
b(duced)65 b(b)-5 b(y)67 b Fo(pr)-8 b(o)g(c)9 b Fp(.)101
b(\(This)65 b(is)h(the)1478 8337 y(same)56 b(as)g(the)f(CML)g
Fl(withNack)i Fp(function.\))1511 8677 y Fg(\017)83 b
Fl(\(sync)h Fo(r)-8 b(endezvous)14 b Fl(\))83 b Fg(!)g
Fo(value)1511 8876 y Fg(\017)g Fl(\(select)h Fo(r)-8
b(endezvous)84 b(.)25 b(.)g(.)g Fl(\))103 b Fg(!)83 b
Fo(value)1478 9215 y Fl(Sync)60 b Fp(sync)-5 b(hronizes)61
b(the)e(curren)-5 b(t)60 b(thread)f(on)h(rendezv)-5 b(ous)60
b Fo(r)-8 b(endezvous)14 b Fp(,)61 b(returning)f(the)1478
9415 y(v)-9 b(alue)54 b(it)h(yields.)74 b Fl(Select)56
b Fp(sync)-5 b(hronizes)56 b(on)f(the)g(c)-5 b(hoice)55
b(of)g(its)g(argumen)-5 b(t;)56 b Fl(\(select)88 b Fd(r)7132
9440 y Fj(1)1478 9614 y Fl(...)p Fd(r)1814 9639 y Fa(n)1905
9614 y Fl(\))60 b Fp(is)h(seman)-5 b(tically)61 b(equiv)-9
b(alen)k(t)59 b(to)h Fl(\(sync)88 b(\(choose)h(select)f
Fd(r)6087 9639 y Fj(1)6248 9614 y Fl(...)p Fd(r)6584
9639 y Fa(n)6675 9614 y Fl(\)\))p Fp(,)62 b(but)1478
9813 y(ma)-5 b(y)42 b(b)5 b(e)40 b(implemen)-5 b(ted)43
b(more)e(e\016cien)-5 b(tly)-14 b(.)70 b(\(These)41 b(are)g(the)g(same)
h(as)g(the)f(CML)g(functions)1478 10012 y Fl(sync)56
b Fp(and)g Fl(select)p Fp(.\))4259 10511 y(86)p eop end
%%Page: 87 95
TeXDict begin 87 94 bop 581 1046 a Fc(7.8.2)225 b(Sync)-6
b(hronous)72 b(c)-6 b(hannels)581 1365 y Fp(The)84 b
Fl(rendezvous-channels)k Fp(structure)c(con)-5 b(tains)85
b(abstractions)g(for)f(bidirectional,)581 1564 y(sync)-5
b(hronous)57 b(c)-5 b(hannels)57 b(for)e(comm)-5 b(unicating)57
b(b)5 b(et)-5 b(w)g(een)55 b(t)-5 b(w)g(o)56 b(threads.)614
1916 y Fg(\017)83 b Fl(\(make-channel\))j Fg(!)d Fo(channel)614
2115 y Fg(\017)g Fl(\(channel?)102 b Fo(x)20 b Fl(\))83
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)581 2467 y Fl(Make-channel)76
b Fp(creates)c(a)i(new)f(sync)-5 b(hronous)75 b(c)-5
b(hannel.)129 b(\(This)73 b(is)h(the)f(same)h(as)g(the)581
2666 y(CML)55 b Fl(channel)i Fp(function.\))73 b Fl(Channel?)j
Fp(is)56 b(the)f(predicate)g(for)g(sync)-5 b(hronous)57
b(c)-5 b(hannels.)614 3018 y Fg(\017)83 b Fl(\(send-rv)i
Fo(channel)f(value)12 b Fl(\))85 b Fg(!)e Fo(r)-8 b(endezvous)614
3217 y Fg(\017)83 b Fl(\(send)h Fo(channel)h(value)12
b Fl(\))581 3569 y(Send-rv)57 b Fp(creates)f(a)f(rendezv)-5
b(ous)57 b(that,)e(up)5 b(on)57 b(sync)-5 b(hronization,)57
b(sends)g(message)g Fo(value)581 3768 y Fp(on)66 b(the)e(sync)-5
b(hronous)67 b(c)-5 b(hannel)67 b Fo(channel)17 b Fp(.)105
b(The)65 b(sync)-5 b(hronization)66 b(suceeds)g(only)f(when)581
3967 y(another)57 b(thread)h(attempts)f(to)g(receiv)-5
b(e)56 b(a)i(message)g(from)g Fo(channel)17 b Fp(.)81
b(\(This)58 b(is)g(the)f(same)581 4166 y(as)49 b(the)e(CML)h
Fl(sendEvt)h Fp(function.\))71 b Fl(Send)49 b Fp(directly)e(sends)i(a)f
(message)h Fo(value)62 b Fp(on)48 b(c)-5 b(hannel)581
4366 y Fo(channel)17 b Fp(;)97 b Fl(\(send)88 b Fd(c)f(v)6
b Fl(\))82 b Fp(is)g(equiv)-9 b(alen)k(t)81 b(to)g Fl(\(sync)88
b(\(send-rv)h Fd(c)e(v)6 b Fl(\)\))p Fp(.)153 b(\()p
Fl(Send)82 b Fp(is)g(the)581 4565 y(same)56 b(as)g(the)f(CML)g
Fl(send)h Fp(function.\))614 4916 y Fg(\017)83 b Fl(\(receive-rv)i
Fo(channel)17 b Fl(\))85 b Fg(!)e Fo(r)-8 b(endezvous)614
5116 y Fg(\017)83 b Fl(\(receive)i Fo(channel)17 b Fl(\))581
5467 y(Receive-rv)57 b Fp(creates)e(a)g(rendezv)-5 b(ous)56
b(whic)-5 b(h,)56 b(up)5 b(on)55 b(sync)-5 b(hronization,)57
b(receiv)-5 b(es)55 b(a)g(mes-)581 5667 y(sage)79 b(on)g(c)-5
b(hannel)80 b Fo(channel)17 b Fp(.)145 b(\(This)79 b(is)h(the)e(same)h
(as)g(the)g(CML)f Fl(recEvt)i Fp(function.\))581 5866
y Fl(Receive)86 b Fp(directly)f(receiv)-5 b(es)85 b(a)g(message)h(on)f
(c)-5 b(hannel)86 b Fo(channel)17 b Fp(;)102 b Fl(\(receive)88
b Fd(c)f(v)6 b Fl(\))86 b Fp(is)581 6065 y(equiv)-9 b(alen)k(t)70
b(to)f Fl(\(sync)89 b(\(receive-rv)g Fd(c)e(v)6 b Fl(\)\))p
Fp(.)119 b(\()p Fl(Receive)71 b Fp(is)g(the)e(same)i(as)g(the)f(CML)581
6264 y Fl(recv)56 b Fp(function.\))581 6764 y Fc(7.8.3)225
b(Sync)-6 b(hronous)72 b(v)-12 b(ariables)581 7083 y
Fp(Tw)-5 b(o)37 b(structures)g(con)-5 b(tain)38 b(abstractions)f(for)g
(sync)-5 b(hronous)39 b(v)-9 b(ariables:)65 b(the)36
b Fl(rendezvous-placeholders)581 7282 y Fp(structure)h(for)g(so-called)
g Fo(plac)-8 b(eholders)52 b Fp(\(write-once)36 b(v)-9
b(ariables\),)40 b(and)e(the)e Fl(rendezvous-jars)581
7481 y Fp(structure)55 b(for)g Fo(jars)69 b Fp(\(whic)-5
b(h)56 b(allo)-5 b(w)56 b(m)-5 b(ultiple)56 b(up)5 b(dates.\))581
7947 y Fm(Placeholders)581 8266 y Fp(Placeholders)77
b(are)e(write-once)h(v)-9 b(ariables.)135 b(The)76 b(placeholders)h
(implemen)-5 b(ted)77 b(b)-5 b(y)76 b(the)581 8465 y
Fl(rendezvous-placeholders)46 b Fp(structure)c(o\013er)g(equiv)-9
b(alen)k(t)41 b(functionalit)-5 b(y)42 b(to)g(the)f(place-)581
8664 y(holders)75 b(implemen)-5 b(ted)75 b(b)-5 b(y)74
b(the)g Fl(placeholders)i Fp(structure)e(\(see)f(Section)h(7.6.2\),)79
b(but)581 8864 y(additionally)64 b(allo)-5 b(w)65 b(con)-5
b(v)g(erting)64 b(a)f(placeholder)i(in)-5 b(to)64 b(a)f(rendezv)-5
b(ous.)100 b(Note,)65 b(ho)-5 b(w)g(ev)g(er,)581 9063
y(that)48 b(placeholders)h(from)g Fl(placeholders)h Fp(are)e
(di\013eren)-5 b(t)49 b(from)f(and)h(not)g(in)-5 b(terc)g(hangable)581
9262 y(with)55 b(placeholders)i(from)e Fl(rendezvous-placeholders)p
Fp(.)614 9614 y Fg(\017)83 b Fl(\(make-placeholder\))k
Fg(!)c Fo(plac)-8 b(eholder)614 9813 y Fg(\017)83 b Fl
(\(make-placeholder)j Fo(id)17 b Fl(\))83 b Fg(!)h Fo(plac)-8
b(eholder)614 10012 y Fg(\017)83 b Fl(\(placeholder?)103
b Fo(x)20 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)3362
10511 y Fp(87)p eop end
%%Page: 88 96
TeXDict begin 88 95 bop 1478 1046 a Fl(Make-placeholder)68
b Fp(creates)c(an)h(empt)-5 b(y)65 b(placeholder.)104
b(\(The)64 b(optional)i Fo(id)82 b Fp(argumen)-5 b(t)1478
1245 y(is)74 b(only)g(for)g(debugging)g(purp)5 b(oses;)85
b(the)73 b(discloser)i(for)f(placeholders)g(prin)-5 b(ts)75
b(it)f(out)f(if)1478 1445 y(presen)-5 b(t.\))88 b(\(This)61
b(is)g(the)e(same)i(as)g(the)f(CML)g Fl(iVar)h Fp(function.\))88
b Fl(Placeholder?)i Fp(is)61 b(the)1478 1644 y(predicate)55
b(for)g(placeholders.)1511 2007 y Fg(\017)83 b Fl(\(placeholder-set!)j
Fo(plac)-8 b(eholder)84 b(value)12 b Fl(\))1478 2371
y(Placeholder-set!)125 b Fp(places)72 b(a)g(v)-9 b(alue)71
b(in)-5 b(to)72 b(a)g(placeholder.)123 b(Doing)72 b(this)g(more)g(than)
1478 2570 y(once)55 b(signals)i(an)e(error.)74 b(\(This)56
b(is)g(the)f(same)h(as)g(the)f(CML)g Fl(iPut)h Fp(function.\))1511
2934 y Fg(\017)83 b Fl(\(placeholder-value-rv)k Fo(plac)-8
b(eholder)18 b Fl(\))84 b Fg(!)f Fo(r)-8 b(endezvous)1511
3133 y Fg(\017)83 b Fl(\(placeholder-value)j Fo(plac)-8
b(eholder)18 b Fl(\))84 b Fg(!)f Fo(value)1478 3497 y
Fl(Placeholder-value)62 b Fp(extracts)d(the)g(v)-9 b(alue)59
b(from)h(the)f(placeholder)h(and)g(returns)g(it.)86 b(If)1478
3696 y(the)41 b(placeholder)i(is)f(empt)-5 b(y)-14 b(,)45
b(it)d(blo)5 b(c)-5 b(ks)42 b(the)g(curren)-5 b(t)42
b(thread)g(un)-5 b(til)42 b(it)g(b)5 b(ecomes)42 b(full.)70
b(\(This)1478 3895 y(is)53 b(the)g(same)h(as)g(the)e(CML)h
Fl(iGet)h Fp(function.\))73 b Fl(Placeholder-value-rv)56
b Fp(creates)d(a)g(ren-)1478 4095 y(dezv)-5 b(ous)44
b(that)f(will,)j(up)5 b(on)43 b(sync)-5 b(hronization,)47
b(extrasct)c(the)f(v)-9 b(alue)43 b(from)h(the)f(placeholder)1478
4294 y(and)56 b(yield)f(it)g(as)h(a)f(result.)74 b(\(This)56
b(is)g(the)f(same)h(as)g(the)f(CML)g Fl(iGetEvt)i Fp(function.\))1478
4781 y Fm(Jars)1478 5107 y Fp(A)k(jar)h(is)h(a)f(sync)-5
b(hronous)64 b(v)-9 b(ariable)62 b(whic)-5 b(h)62 b(can)h(ha)-5
b(v)g(e)62 b(t)-5 b(w)g(o)62 b(states:)88 b(full)62 b(and)h(empt)-5
b(y)-14 b(.)94 b(It)1478 5307 y(b)5 b(ecomes)69 b(full)g(when)g(a)g(v)
-9 b(alue)69 b(it)f(put)h(in)-5 b(to)69 b(it;)76 b(putting)69
b(a)g(v)-9 b(alue)68 b(in)-5 b(to)70 b(a)f(full)g(jar)g(is)g(an)1478
5506 y(error.)79 b(Con)-5 b(v)g(ersely)-14 b(,)58 b(it)f(b)5
b(ecomes)57 b(empt)-5 b(y)57 b(when)h(a)f(v)-9 b(alue)56
b(is)i(tak)-5 b(en)57 b(out)g(of)g(it.)78 b(T)-14 b(rying)58
b(to)1478 5705 y(tak)-5 b(e)58 b(a)h(v)-9 b(alue)59 b(out)f(of)h(an)g
(empt)-5 b(y)59 b(jar)g(blo)5 b(c)-5 b(ks)59 b(un)-5
b(til)60 b(it)f(b)5 b(ecomes)59 b(full.)85 b(\(Jars)59
b(are)g(similar)1478 5904 y(to)c(ID-90)g(M-structures.\))75
b(Jars)56 b(liv)-5 b(e)55 b(in)h(the)f Fl(rendezvous-jars)j
Fp(structure.)1511 6268 y Fg(\017)83 b Fl(\(make-jar\))i
Fg(!)e Fo(jar)1511 6467 y Fg(\017)g Fl(\(make-jar)i Fo(id)17
b Fl(\))83 b Fg(!)g Fo(jar)1511 6667 y Fg(\017)g Fl(\(jar?)101
b Fo(x)20 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1478
7030 y Fl(Make-jar)42 b Fp(creates)f(an)g(empt)-5 b(y)41
b(jar.)69 b(\(The)41 b(optional)g Fo(id)58 b Fp(argumen)-5
b(t)42 b(is)f(only)h(for)e(debugging)1478 7230 y(purp)5
b(oses;)53 b(the)c(discloser)i(for)f(jars)g(prin)-5 b(ts)51
b(it)e(out)h(if)g(presen)-5 b(t.\))72 b(\(This)50 b(is)g(the)g(same)g
(as)h(the)1478 7429 y(CML)k Fl(mVar)h Fp(function.\))74
b Fl(Jar?)g Fp(is)56 b(the)f(predicate)g(for)g(jars.)1511
7759 y Fg(\017)83 b Fl(\(jar-put!)i Fo(jar)d(value)12
b Fl(\))1478 8090 y(Jar-put!)83 b Fp(places)59 b(a)f(v)-9
b(alue)58 b(in)-5 b(to)58 b(a)g(jar)g(if)g(it)g(is)h(empt)-5
b(y)-14 b(.)82 b(Applying)61 b Fl(jar-put!)83 b Fp(to)58
b(a)g(full)1478 8289 y(jar)d(is)h(an)g(error.)73 b(\(This)56
b(is)g(the)f(same)h(as)g(the)f(CML)g Fl(mPut)h Fp(function.\))1511
8653 y Fg(\017)83 b Fl(\(jar-take-rv)i Fo(plac)-8 b(eholder)18
b Fl(\))84 b Fg(!)f Fo(r)-8 b(endezvous)1511 8852 y Fg(\017)83
b Fl(\(jar-take)i Fo(plac)-8 b(eholder)18 b Fl(\))84
b Fg(!)f Fo(value)1478 9215 y Fl(Jar-take)68 b Fp(tak)-5
b(es)66 b(a)h(v)-9 b(alue)66 b(from)g(a)h(full)g(jar,)i(empt)-5
b(ying)67 b(it)f(in)h(the)f(pro)5 b(cess.)108 b(If)66
b(the)h(jar)1478 9415 y(is)57 b(empt)-5 b(y)-14 b(,)56
b Fl(jar-take)i Fp(blo)5 b(c)-5 b(ks)56 b(un)-5 b(til)57
b(it)f(b)5 b(ecomes)56 b(full.)77 b(\(This)56 b(is)h(the)f(same)h(as)g
(the)e(CML)1478 9614 y Fl(mTake)41 b Fp(function.\))68
b Fl(Jar-take-rv)43 b Fp(creates)c(a)i(rendezv)-5 b(ous)41
b(that,)i(up)5 b(on)40 b(sync)-5 b(hronization,)1478
9813 y(will)54 b(extract)d(the)i(v)-9 b(alue)53 b(from)h(a)f(jar)h(and)
g(empt)-5 b(y)53 b(it)g(in)h(the)f(pro)5 b(cess.)74 b(\(This)54
b(is)g(the)f(same)1478 10012 y(as)j(the)f(CML)g Fl(mTakeEvt)i
Fp(function.\))4259 10511 y(88)p eop end
%%Page: 89 97
TeXDict begin 89 96 bop 581 1046 a Fc(7.8.4)225 b(Timeouts)581
1353 y Fp(The)38 b Fl(rendezvous-time)i Fp(structure)d(allo)-5
b(ws)38 b(creating)g(rendezv)-5 b(ous)38 b(for)f(alarms)h(and)g(time-)
581 1552 y(outs:)614 1884 y Fg(\017)83 b Fl(\(after-time-rv)j
Fo(mil)8 b(lise)-8 b(c)g(onds)14 b Fl(\))83 b Fg(!)g
Fo(r)-8 b(endezvous)614 2083 y Fg(\017)83 b Fl(\(at-real-time-rv)j
Fo(time)12 b Fl(\))84 b Fg(!)f Fo(r)-8 b(endezvous)581
2415 y Fl(After-time-rv)48 b Fp(creates)c(a)h(rendezv)-5
b(ous)46 b(that)f(b)5 b(ecomes)45 b(enabled)h(at)e(time)h(in)-5
b(terv)c(al)45 b Fo(mil-)581 2615 y(lise)-8 b(c)g(onds)79
b Fp(after)64 b(sync)-5 b(hronization.)104 b(\(Actually)-14
b(,)67 b Fo(mil)8 b(lise)-8 b(c)g(onds)79 b Fp(is)66
b(a)f(minim)-5 b(um)67 b(w)-5 b(aiting)581 2814 y(time;)44
b(the)37 b(actual)g(dela)-5 b(y)38 b(ma)-5 b(y)37 b(b)5
b(e)38 b(longer.\))67 b(\(This)38 b(is)g(the)f(same)i(as)f(the)f(CML)g
Fl(timeOutEvt)581 3013 y Fp(function.\))83 b Fl(At-real-time-rv)61
b Fp(creates)e(a)f(rendezv)-5 b(ous)59 b(that)f(b)5 b(ecomes)59
b(enabled)g(at)f(an)581 3212 y(absolute)d(time)f(sp)5
b(eci\014ed)55 b(b)-5 b(y)57 b Fo(time)12 b Fp(;)56 b(this)e(absolute)h
(time)g(is)g(sp)5 b(eci\014ed)54 b(in)h(the)f(same)h(w)-5
b(a)g(y)581 3412 y(as)65 b(the)g(return)f(v)-9 b(alue)65
b Fl(real-time)h Fp(from)f(the)f Fl(time)i Fp(structure.)102
b(\(This)65 b(is)g(the)g(same)g(as)581 3611 y(the)55
b(CML)g Fl(atTimeEvt)i Fp(function.\))581 4076 y Fc(7.8.5)225
b(CML)74 b(to)h(Sc)-6 b(heme)74 b(corresp)6 b(ondence)581
4382 y Fp(The)54 b(follo)-5 b(wing)55 b(table)f(lists)h(the)f(Sc)-5
b(heme)55 b(names)g(that)f(corresp)5 b(ond)55 b(to)e(particular)i(CML)
581 4581 y(names.)2038 4920 y(CML)g(name)253 b(Sc)-5
b(heme)56 b(name)p 1939 4986 3014 7 v 1939 4986 V 3010
5126 a Fl(rendezvous)2038 5325 y(never)636 b(never-rv)2038
5524 y(alwaysEvt)288 b(always-rv)2038 5724 y(choose)549
b(choose)2038 5923 y(wrap)723 b(wrap)2038 6122 y(guard)636
b(guard)2038 6321 y(withNack)375 b(with-nack)2038 6521
y(sync)723 b(sync)2038 6720 y(select)549 b(select)2617
6991 y(rendezvous-channels)2038 7190 y(channel)462 b(make-channel)2038
7389 y(sendEvt)g(send-rv)2038 7588 y(send)723 b(send)2038
7788 y(recEvt)549 b(receive-rv)2038 7987 y(rec)810 b(receive)2443
8258 y(rendezvous-placeholders)2038 8457 y(iVar)723 b(make-placeholder)
2038 8656 y(iPut)g(placeholder-set!)2038 8855 y(iGet)g
(placeholder-value)2038 9055 y(iGetEvt)462 b(placeholder-value-rv)2792
9325 y(rendezvous-jars)2038 9525 y(mVar)723 b(make-jar)2038
9724 y(mTake)636 b(jar-take)2038 9923 y(mTakeEvt)375
b(jar-take-rv)3362 10511 y Fp(89)p eop end
%%Page: 90 98
TeXDict begin 90 97 bop 2935 1046 a Fl(mPut)723 b(jar-put!)3688
1317 y(rendezvous-time)2935 1516 y(timeOutEvt)201 b(after-time-rv)2935
1715 y(atTimeEvt)288 b(at-real-time-rv)4259 10511 y Fp(90)p
eop end
%%Page: 91 99
TeXDict begin 91 98 bop 581 2299 a Fk(Chapter)130 b(8)581
3138 y Fn(Mixing)156 b(Sc)-13 b(heme)155 b(48)h(and)f(C)581
4009 y Fp(This)53 b(c)-5 b(hapter)53 b(describ)5 b(es)52
b(an)h(in)-5 b(terface)52 b(for)g(calling)g(C)g(functions)h(from)g(Sc)
-5 b(heme,)53 b(calling)581 4208 y(Sc)-5 b(heme)39 b(functions)f(from)g
(C,)h(and)f(allo)5 b(cating)38 b(storage)g(in)g(the)g(Sc)-5
b(heme)38 b(heap..)69 b(Sc)-5 b(heme)39 b(48)581 4408
y(manages)60 b(stub)f(functions)h(in)f(C)f(that)h(negotiate)f(b)5
b(et)-5 b(w)g(een)58 b(the)h(calling)g(con)-5 b(v)g(en)g(tions)60
b(of)581 4607 y(Sc)-5 b(heme)77 b(and)g(C)f(and)g(the)g(memory)h(allo)5
b(cation)75 b(p)5 b(olicies)77 b(of)f(b)5 b(oth)76 b(w)-5
b(orlds.)137 b(No)76 b(stub)581 4806 y(generator)55 b(is)h(a)-5
b(v)c(ailable)56 b(y)-5 b(et,)55 b(but)g(writing)g(stubs)i(is)f(a)f
(straigh)-5 b(tforw)g(ard)56 b(task.)581 5398 y Fi(8.1)270
b(Av)-15 b(ailable)89 b(facilities)581 5777 y Fp(The)55
b(follo)-5 b(wing)57 b(facilities)e(are)g(a)-5 b(v)c(ailable)56
b(for)f(in)-5 b(terfacing)55 b(b)5 b(et)-5 b(w)g(een)55
b(Sc)-5 b(heme)56 b(48)g(and)g(C:)830 6133 y Fg(\017)83
b Fp(Sc)-5 b(heme)56 b(co)5 b(de)55 b(can)g(call)h(C)f(functions.)830
6497 y Fg(\017)83 b Fp(The)64 b(external)e(in)-5 b(terface)63
b(pro)-5 b(vides)65 b(full)f(in)-5 b(trosp)5 b(ection)63
b(for)h(all)g(Sc)-5 b(heme)64 b(ob)9 b(jects.)996 6696
y(External)51 b(co)5 b(de)51 b(ma)-5 b(y)52 b(insp)5
b(ect,)52 b(mo)5 b(dify)-14 b(,)52 b(and)g(allo)5 b(cate)51
b(Sc)-5 b(heme)52 b(ob)9 b(jects)51 b(arbitrar-)996 6895
y(ily)-14 b(.)830 7260 y Fg(\017)83 b Fp(External)55
b(co)5 b(de)55 b(ma)-5 b(y)56 b(raise)f(exceptions)h(bac)-5
b(k)55 b(to)g(Sc)-5 b(heme)56 b(48)f(to)g(signal)i(errors.)830
7624 y Fg(\017)83 b Fp(External)47 b(co)5 b(de)48 b(ma)-5
b(y)48 b(call)g(bac)-5 b(k)47 b(in)-5 b(to)48 b(Sc)-5
b(heme.)72 b(Sc)-5 b(heme)49 b(48)f(correctly)e(unrolls)j(the)996
7823 y(pro)5 b(cess)56 b(stac)-5 b(k)55 b(on)h(non-lo)5
b(cal)56 b(exits.)830 8187 y Fg(\017)83 b Fp(External)51
b(mo)5 b(dules)53 b(ma)-5 b(y)52 b(register)f(bindings)j(of)d(names)i
(to)e(v)-9 b(alues)52 b(with)f(a)h(cen)-5 b(tral)996
8387 y(registry)76 b(accessible)h(from)g(Sc)-5 b(heme.)137
b(Con)-5 b(v)g(ersely)-14 b(,)82 b(Sc)-5 b(heme)77 b(co)5
b(de)76 b(can)g(register)996 8586 y(shared)56 b(bindings)i(for)d
(access)g(b)-5 b(y)56 b(C)f(co)5 b(de.)581 9093 y Fc(8.1.1)225
b(Sc)-6 b(heme)74 b(structures)581 9415 y Fp(The)38 b(structure)g
Fl(external-calls)i Fp(has)e(most)h(of)e(the)h(Sc)-5
b(heme)38 b(functions)g(describ)5 b(ed)39 b(here.)581
9614 y(The)74 b(others)h(are)f(in)g Fl(dynamic-externals)p
Fp(,)82 b(whic)-5 b(h)75 b(has)g(the)f(functions)g(for)g(dynamic)581
9813 y(loading)66 b(and)g(name)f(lo)5 b(okup)65 b(from)g(Section)g
(8.4,)j(and)e Fl(shared-bindings)p Fp(,)k(whic)-5 b(h)66
b(has)581 10012 y(the)55 b(additional)h(shared-binding)i(functions)e
(describ)5 b(ed)56 b(in)f(section)h(8.2.3.)3362 10511
y(91)p eop end
%%Page: 92 100
TeXDict begin 92 99 bop 1478 1046 a Fc(8.1.2)225 b(C)74
b(naming)g(con)-6 b(v)g(en)g(tions)1478 1367 y Fp(The)61
b(names)g(of)g(all)g(of)g(Sc)-5 b(heme)61 b(48's)h(visible)f(C)g
(bindings)h(b)5 b(egin)61 b(with)g(`)p Fl(s48)p 6426
1367 53 7 v 63 w Fp(')g(\(for)g(pro-)1478 1567 y(cedures)66
b(and)g(v)-9 b(ariables\))65 b(or)h(`)p Fl(S48)p 3707
1567 V 64 w Fp(')f(\(for)g(macros\).)105 b(Whenev)-5
b(er)66 b(a)f(C)h(name)g(is)g(deriv)-5 b(ed)1478 1766
y(from)50 b(a)g(Sc)-5 b(heme)51 b(iden)-5 b(ti\014er,)52
b(w)-5 b(e)50 b(replace)g(`)p Fl(-)p Fp(')h(with)f(`)p
4783 1766 V 62 w(')h(and)f(con)-5 b(v)g(ert)50 b(letters)g(to)g(lo)-5
b(w)g(ercase)1478 1965 y(for)49 b(pro)5 b(cedures)51
b(and)f(upp)5 b(ercase)50 b(for)g(macros.)72 b(A)50 b(\014nal)g(`)p
Fl(?)p Fp(')73 b(con)-5 b(v)g(erted)49 b(to)h(`)p 6306
1965 V 63 w Fl(p)p Fp(')g(\(`)p 6663 1965 V 62 w Fl(P)p
Fp(')g(in)g(C)1478 2164 y(macro)h(names\).)72 b(A)50
b(\014nal)i(`)p Fl(!)p Fp(')72 b(is)51 b(dropp)5 b(ed.)73
b(Th)-5 b(us)52 b(the)e(C)h(macro)f(for)h(Sc)-5 b(heme's)52
b Fl(pair?)73 b Fp(is)1478 2364 y Fl(S48)p 1749 2364
V 63 w(PAIR)p 2160 2364 V 64 w(P)59 b Fp(and)g(the)g(one)g(for)g
Fl(set-car!)86 b Fp(is)60 b Fl(S48)p 4766 2364 V 63 w(SET)p
5090 2364 V 63 w(CAR)p Fp(.)g(Pro)5 b(cedures)59 b(and)h(macros)1478
2563 y(that)55 b(do)g(not)g(c)-5 b(hec)g(k)56 b(the)f(t)-5
b(yp)5 b(es)55 b(of)g(their)g(argumen)-5 b(ts)57 b(ha)-5
b(v)g(e)55 b(`)p Fl(unsafe)p Fp(')i(in)f(their)f(names.)1727
2770 y(All)60 b(of)h(the)f(C)g(functions)i(and)f(macros)g(describ)5
b(ed)61 b(ha)-5 b(v)g(e)61 b(protot)-5 b(yp)5 b(es)61
b(or)f(de\014nitions)1478 2969 y(in)e(the)g(\014le)g
Fl(c/scheme48.h)p Fp(.)85 b(The)58 b(C)g(t)-5 b(yp)5
b(e)57 b(for)h(Sc)-5 b(heme)59 b(v)-9 b(alues)58 b(is)h(de\014ned)f
(there)g(to)g(b)5 b(e)1478 3169 y Fl(s48)p 1749 3169
V 63 w(value)p Fp(.)1478 3676 y Fc(8.1.3)225 b(Garbage)74
b(collection)1478 3997 y Fp(Sc)-5 b(heme)43 b(48)f(uses)h(a)g(cop)-5
b(ying)42 b(garbage)h(collector.)69 b(The)42 b(collector)g(m)-5
b(ust)43 b(b)5 b(e)42 b(able)g(to)g(lo)5 b(cate)1478
4197 y(all)49 b(references)g(to)f(ob)9 b(jects)49 b(allo)5
b(cated)49 b(in)g(the)g(Sc)-5 b(heme)49 b(48)h(heap)f(in)g(order)h(to)e
(ensure)i(that)1478 4396 y(storage)e(is)h(not)g(reclaimed)f
(prematurely)h(and)g(to)f(up)5 b(date)48 b(references)g(to)g(ob)9
b(jects)48 b(mo)-5 b(v)g(ed)1478 4595 y(b)g(y)48 b(the)f(collector.)71
b(The)48 b(garbage)f(collector)g(ma)-5 b(y)49 b(run)f(whenev)-5
b(er)47 b(an)h(ob)9 b(ject)48 b(is)g(allo)5 b(cated)1478
4794 y(in)52 b(the)f(heap.)74 b(C)51 b(v)-9 b(ariables)52
b(whose)h(v)-9 b(alues)52 b(are)f(Sc)-5 b(heme)53 b(48)f(ob)9
b(jects)52 b(and)g(whic)-5 b(h)53 b(are)e(liv)-5 b(e)1478
4994 y(across)46 b(heap)f(allo)5 b(cation)45 b(calls)g(need)h(to)e(b)5
b(e)45 b(registered)g(with)g(the)f(garbage)i(collector.)69
b(See)1478 5193 y(section)55 b(8.7)h(for)f(more)g(information.)1478
5784 y Fi(8.2)269 b(Shared)91 b(bindings)1478 6163 y
Fp(Shared)84 b(bindings)i(are)d(the)h(means)g(b)-5 b(y)84
b(whic)-5 b(h)85 b(named)f(v)-9 b(alues)84 b(are)g(shared)h(b)5
b(et)-5 b(w)g(een)1478 6362 y(Sc)g(heme)72 b(co)5 b(de)71
b(and)h(C)f(co)5 b(de.)122 b(There)71 b(are)g(t)-5 b(w)g(o)72
b(separate)f(tables)h(of)f(shared)h(bindings,)1478 6562
y(one)57 b(for)h(v)-9 b(alues)58 b(de\014ned)g(in)g(Sc)-5
b(heme)58 b(and)g(accessed)g(from)g(C)f(and)h(the)g(other)f(for)g(v)-9
b(alues)1478 6761 y(going)63 b(the)g(other)f(w)-5 b(a)g(y)-14
b(.)98 b(Shared)63 b(bindings)i(actually)e(bind)g(names)h(to)f(cells,)i
(to)e(allo)-5 b(w)63 b(a)1478 6960 y(name)56 b(to)f(b)5
b(e)56 b(lo)5 b(ok)-5 b(ed)55 b(up)h(b)5 b(efore)55 b(it)h(has)g(b)5
b(een)55 b(assigned.)77 b(This)56 b(is)h(necessary)f(b)5
b(ecause)55 b(C)1478 7159 y(initialization)62 b(co)5
b(de)61 b(ma)-5 b(y)62 b(b)5 b(e)61 b(run)i(b)5 b(efore)61
b(or)g(after)g(the)h(corresp)5 b(onding)62 b(Sc)-5 b(heme)63
b(co)5 b(de,)1478 7359 y(dep)g(ending)50 b(on)g(whether)g(the)f(Sc)-5
b(heme)51 b(co)5 b(de)49 b(is)h(in)g(the)g(resumed)h(image)f(or)g(is)g
(run)h(in)f(the)1478 7558 y(curren)-5 b(t)55 b(session.)1478
8065 y Fc(8.2.1)225 b(Exp)6 b(orting)74 b(Sc)-6 b(heme)74
b(v)-12 b(alues)75 b(to)g(C)1511 8378 y Fg(\017)83 b
Fl(\(define-exported-binding)k Fo(name)d(value)12 b Fl(\))84
b Fg(!)g Fo(shar)-8 b(e)g(d-binding)1511 8693 y Fg(\017)83
b Fl(s48)p 1948 8693 V 63 w(value)h(s48)p 2791 8693 V
63 w(get)p 3115 8693 V 64 w(imported)p 3875 8693 V 64
w(binding\(char)h(*name\))1511 8893 y Fg(\017)e Fl(s48)p
1948 8893 V 63 w(value)h(S48)p 2791 8893 V 63 w(SHARED)p
3376 8893 V 64 w(BINDING)p 4049 8893 V 64 w(REF\(s48)p
4722 8893 V 64 w(value)g(shared)p 5827 8893 V 64 w(binding\))1478
9215 y(Define-exported-binding)g Fp(mak)-5 b(es)81 b
Fo(value)94 b Fp(a)-5 b(v)c(ailable)80 b(to)g(C)g(co)5
b(de)80 b(under)g(as)h Fo(name)1478 9415 y Fp(whic)-5
b(h)47 b(m)-5 b(ust)48 b(b)5 b(e)46 b(a)h Fo(string)15
b Fp(,)48 b(creating)f(a)f(new)h(shared)g(binding)h(if)e(necessary)-14
b(.)72 b(The)46 b(C)h(func-)1478 9614 y(tion)68 b Fl(s48)p
2103 9614 V 64 w(get)p 2428 9614 V 63 w(imported)p 3187
9614 V 64 w(binding)i Fp(returns)f(the)f(shared)h(binding)h(de\014ned)f
(for)f Fl(name)p Fp(,)1478 9813 y(again)63 b(creating)f(it)g(if)h
(necessary)-14 b(.)96 b(The)62 b(C)h(macro)f Fl(S48)p
5020 9813 V 64 w(SHARED)p 5606 9813 V 63 w(BINDING)p
6278 9813 V 64 w(REF)i Fp(derefer-)1478 10012 y(ences)55
b(a)h(shared)g(binding,)h(returning)e(its)h(curren)-5
b(t)55 b(v)-9 b(alue.)4259 10511 y(92)p eop end
%%Page: 93 101
TeXDict begin 93 100 bop 581 1046 a Fc(8.2.2)225 b(Exp)6
b(orting)75 b(C)f(v)-12 b(alues)75 b(to)g(Sc)-6 b(heme)614
1354 y Fg(\017)83 b Fl(void)h(s48)p 1483 1354 53 7 v
63 w(define)p 2068 1354 V 64 w(exported)p 2828 1354 V
64 w(binding\(char)h(*name,)f(s48)p 4888 1354 V 64 w(value)g(v\))614
1656 y Fg(\017)f Fl(\(lookup-imported-binding)88 b Fo(string)15
b Fl(\))83 b Fg(!)g Fo(shar)-8 b(e)g(d-binding)614 1855
y Fg(\017)83 b Fl(\(shared-binding-ref)k Fo(shar)-8 b(e)g(d-binding)15
b Fl(\))83 b Fg(!)g Fo(value)581 2158 y Fp(These)h(are)g(used)h(to)e
(de\014ne)h(shared)h(bindings)h(from)e(C)g(and)g(to)f(access)i(them)f
(from)581 2357 y(Sc)-5 b(heme.)72 b(Again,)49 b(if)d(a)h(name)h(is)f
(lo)5 b(ok)-5 b(ed)47 b(up)g(b)5 b(efore)46 b(it)h(has)h(b)5
b(een)46 b(de\014ned,)k(a)d(new)f(binding)581 2556 y(is)56
b(created)f(for)g(it.)830 2757 y(The)65 b(common)g(case)f(of)g(exp)5
b(orting)64 b(a)h(C)f(function)g(to)g(Sc)-5 b(heme)65
b(can)g(b)5 b(e)64 b(done)h(using)581 2956 y(the)55 b(macro)h
Fl(S48)p 1637 2956 V 63 w(EXPORT)p 2222 2956 V 64 w(FUNCTION\()p
Fo(name)12 b Fl(\))p Fp(.)76 b(This)56 b(expands)g(in)-5
b(to)581 3294 y Fl(s48)p 852 3294 V 63 w(define)p 1437
3294 V 64 w(exported)p 2197 3294 V 64 w(binding\(")p
Fo(name)12 b Fl(",)3283 3493 y(s48)p 3554 3493 V 64 w(enter)p
4053 3493 V 63 w(pointer\()p Fo(name)g Fl(\)\))581 3830
y Fp(whic)-5 b(h)60 b(b)5 b(o)-5 b(xes)59 b(the)f(function)h(in)-5
b(to)59 b(a)g(Sc)-5 b(heme)60 b(b)-5 b(yte)58 b(v)-5
b(ector)58 b(and)i(then)e(exp)5 b(orts)59 b(it.)84 b(Note)581
4029 y(that)56 b Fl(s48)p 1213 4029 V 63 w(enter)p 1711
4029 V 64 w(pointer)h Fp(allo)5 b(cates)56 b(space)g(in)h(the)e(Sc)-5
b(heme)57 b(heap)g(and)f(migh)-5 b(t)57 b(trigger)581
4228 y(a)f(garbage)f(collection;)g(see)h(Section)f(8.7.)614
4531 y Fg(\017)83 b Fl(\(import-definition)k Fo(name)12
b Fl(\))2912 b Fp(syn)-5 b(tax)614 4731 y Fg(\017)83
b Fl(\(import-definition)k Fo(name)c(c-name)12 b Fl(\))2304
b Fp(syn)-5 b(tax)581 5034 y(These)64 b(macros)h(simplify)f(imp)5
b(orting)64 b(de\014nitions)h(from)f(C)g(to)f(Sc)-5 b(heme.)100
b(They)63 b(expand)581 5233 y(in)-5 b(to)830 5434 y Fl(\(define)89
b Fo(name)100 b Fl(\(lookup-imported-binding)91 b Fo(c-name)12
b Fl(\)\))581 5634 y Fp(where)60 b Fo(c-name)73 b Fp(is)60
b(as)h(supplied)g(for)e(the)h(second)g(form.)87 b(F)-14
b(or)60 b(the)g(\014rst)g(form)g Fo(c-name)73 b Fp(is)581
5834 y(deriv)-5 b(ed)53 b(from)g Fo(name)66 b Fp(b)-5
b(y)53 b(replacing)g(`)p Fl(-)p Fp(')g(with)f(`)p 3605
5834 V 63 w(')h(and)g(con)-5 b(v)g(erting)53 b(letters)f(to)h(lo)-5
b(w)g(ercase.)581 6033 y(F)-14 b(or)56 b(example,)g Fl
(\(import-definition)90 b(my-foo\))56 b Fp(expands)g(in)-5
b(to)830 6234 y Fl(\(define)89 b(my-foo)f(\(lookup-imported-binding)j
("my)p 4588 6234 V 63 w(foo"\)\))581 6706 y Fc(8.2.3)225
b(Complete)75 b(shared)f(binding)g(in)-6 b(terface)581
7015 y Fp(There)49 b(are)g(a)h(n)-5 b(um)g(b)5 b(er)50
b(of)f(other)g(Sc)-5 b(heme)50 b(functions)g(related)f(to)f(shared)j
(bindings;)i(these)581 7214 y(are)i(in)h(the)f(structure)g
Fl(shared-bindings)p Fp(.)614 7518 y Fg(\017)83 b Fl(\(shared-binding?)
103 b Fo(x)20 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614
7717 y Fg(\017)83 b Fl(\(shared-binding-name)k Fo(shar)-8
b(e)g(d-binding)15 b Fl(\))83 b Fg(!)g Fo(string)614
7916 y Fg(\017)g Fl(\(shared-binding-is-import?)105 b
Fo(shar)-8 b(e)g(d-binding)15 b Fl(\))83 b Fg(!)g Fo(b)-8
b(o)g(ole)g(an)614 8115 y Fg(\017)83 b Fl(\(shared-binding-set!)k
Fo(shar)-8 b(e)g(d-binding)83 b(value)12 b Fl(\))614
8315 y Fg(\017)83 b Fl(\(define-imported-binding)88 b
Fo(string)83 b(value)12 b Fl(\))614 8514 y Fg(\017)83
b Fl(\(lookup-exported-binding)88 b Fo(string)15 b Fl(\))614
8713 y Fg(\017)83 b Fl(\(undefine-imported-binding)88
b Fo(string)15 b Fl(\))614 8912 y Fg(\017)83 b Fl
(\(undefine-exported-binding)88 b Fo(string)15 b Fl(\))581
9215 y(Shared-binding?)79 b Fp(is)56 b(the)g(predicate)g(for)f
(shared-bindings.)79 b Fl(Shared-binding-name)581 9415
y Fp(returns)40 b(the)f(name)h(of)f(a)h(binding.)70 b
Fl(Shared-binding-is-import?)j Fp(is)40 b(true)f(if)g(the)g(bind-)581
9614 y(ing)53 b(w)-5 b(as)53 b(de\014ned)g(from)g(C.)f
Fl(Shared-binding-set!)76 b Fp(c)-5 b(hanges)54 b(the)e(v)-9
b(alue)52 b(of)g(a)g(binding.)581 9813 y Fl(Define-imported-binding)87
b Fp(and)c Fl(lookup-exported-binding)j Fp(are)c(Sc)-5
b(heme)83 b(v)-5 b(er-)581 10012 y(sions)90 b(of)102
b Fl(s48)p 1529 10012 V 63 w(define)p 2114 10012 V 64
w(exported)p 2874 10012 V 64 w(binding)90 b Fp(and)f
Fl(s48)p 4254 10012 V 63 w(lookup)p 4839 10012 V 64 w(imported)p
5599 10012 V 64 w(binding)p Fp(.)3362 10511 y(93)p eop
end
%%Page: 94 102
TeXDict begin 94 101 bop 1478 1046 a Fp(The)76 b(t)-5
b(w)g(o)77 b Fl(undefine-)h Fp(pro)5 b(cedures)77 b(remo)-5
b(v)g(e)77 b(bindings)h(from)e(the)g(t)-5 b(w)g(o)77
b(tables.)138 b(They)1478 1245 y(do)55 b(nothing)h(if)f(the)g(name)h
(is)g(not)f(found)h(in)g(the)f(table.)1727 1445 y(The)g(follo)-5
b(wing)56 b(C)g(macros)g(corresp)5 b(ond)56 b(to)e(the)h(Sc)-5
b(heme)56 b(functions)g(ab)5 b(o)-5 b(v)g(e.)1511 1735
y Fg(\017)83 b Fl(int)582 b(S48)p 2791 1735 53 7 v 63
w(SHARED)p 3376 1735 V 64 w(BINDING)p 4049 1735 V 64
w(P\(x\))1511 1934 y Fg(\017)83 b Fl(int)582 b(S48)p
2791 1934 V 63 w(SHARED)p 3376 1934 V 64 w(BINDING)p
4049 1934 V 64 w(IS)p 4287 1934 V 63 w(IMPORT)p 4872
1934 V 64 w(P\(s48)p 5371 1934 V 63 w(value)84 b(s)p
6040 1934 V 63 w(b\))1511 2134 y Fg(\017)f Fl(s48)p 1948
2134 V 63 w(value)h(S48)p 2791 2134 V 63 w(SHARED)p 3376
2134 V 64 w(BINDING)p 4049 2134 V 64 w(NAME\(s48)p 4809
2134 V 64 w(value)g(s)p 5479 2134 V 63 w(b\))1511 2333
y Fg(\017)f Fl(void)499 b(S48)p 2795 2333 V 63 w(SHARED)p
3380 2333 V 64 w(BINDING)p 4053 2333 V 64 w(SET\(s48)p
4726 2333 V 64 w(value)84 b(s)p 5396 2333 V 63 w(b,)f(s48)p
5977 2333 V 63 w(value)h(v\))1478 2880 y Fi(8.3)269 b(Calling)90
b(C)g(functions)h(from)f(Sc)-7 b(heme)1478 3244 y Fp(There)62
b(are)g(three)f(di\013eren)-5 b(t)63 b(w)-5 b(a)g(ys)63
b(to)e(call)i(C)f(functions)g(from)h(Sc)-5 b(heme,)64
b(dep)5 b(ending)63 b(on)1478 3443 y(ho)-5 b(w)56 b(the)f(C)g(function)
g(w)-5 b(as)56 b(obtained.)1511 3734 y Fg(\017)83 b Fl
(\(call-imported-binding)k Fo(binding)d(ar)-8 b(g)4510
3759 y Fj(0)4667 3734 y Fo(.)25 b(.)g(.)g Fl(\))103 b
Fg(!)83 b Fo(value)1478 4024 y Fp(Eac)-5 b(h)74 b(of)f(these)h(applies)
g(its)g(\014rst)g(argumen)-5 b(t,)79 b(a)73 b(C)h(function,)k(to)73
b(the)g(rest)g(of)h(the)f(ar-)1478 4224 y(gumen)-5 b(ts.)84
b(F)-14 b(or)59 b Fl(call-imported-binding)i Fp(the)d(function)h
(argumen)-5 b(t)59 b(m)-5 b(ust)59 b(b)5 b(e)58 b(an)g(im-)1478
4423 y(p)5 b(orted)55 b(binding.)1727 4622 y(F)-14 b(or)65
b(all)g(of)f(these,)j(the)d(C)g(function)g(is)h(passed)h(the)e
Fo(ar)-8 b(g)5324 4647 y Fa(i)5444 4622 y Fp(v)f(alues)64
b(and)h(the)f(v)-9 b(alue)64 b(re-)1478 4821 y(turned)41
b(is)g(that)f(returned)h(b)-5 b(y)41 b(C)g(pro)5 b(cedure.)69
b(No)40 b(automatic)h(represen)-5 b(tation)41 b(con)-5
b(v)g(ersion)1478 5021 y(o)5 b(ccurs)62 b(for)f(either)g(argumen)-5
b(ts)63 b(or)f(return)g(v)-9 b(alues.)93 b(Up)61 b(to)h(t)-5
b(w)g(elv)g(e)62 b(argumen)-5 b(ts)62 b(ma)-5 b(y)63
b(b)5 b(e)1478 5220 y(passed.)104 b(There)65 b(is)h(no)f(metho)5
b(d)66 b(supplied)g(for)f(returning)h(m)-5 b(ultiple)66
b(v)-9 b(alues)65 b(to)g(Sc)-5 b(heme)1478 5419 y(from)48
b(C)f(\(or)h(vice)f(v)-5 b(ersa\))48 b(\(mainly)g(b)5
b(ecause)47 b(C)h(do)5 b(es)48 b(not)g(ha)-5 b(v)g(e)48
b(m)-5 b(ultiple)49 b(return)f(v)-9 b(alues\).)1727 5618
y(Keyb)5 b(oard)70 b(in)-5 b(terrupts)72 b(that)e(o)5
b(ccur)70 b(during)i(a)f(call)g(to)f(a)h(C)f(function)h(are)g(ignored)
1478 5818 y(un)-5 b(til)57 b(the)f(function)h(returns)g(to)f(Sc)-5
b(heme)58 b(\(this)e(is)i(clearly)e(a)g(problem;)j(w)-5
b(e)56 b(are)h(w)-5 b(orking)1478 6017 y(on)55 b(a)h(solution\).)1511
6308 y Fg(\017)83 b Fl(\(import-lambda-definition)k Fo(name)96
b Fl(\()p Fo(formal)k Fl(...\)\))1214 b Fp(syn)-5 b(tax)1511
6507 y Fg(\017)83 b Fl(\(import-lambda-definition)k Fo(name)96
b Fl(\()p Fo(formal)k Fl(...\))84 b Fo(c-name)12 b Fl(\))593
b Fp(syn)-5 b(tax)1478 6797 y(These)62 b(macros)g(simplify)h(imp)5
b(orting)62 b(functions)g(from)g(C.)g(They)f(de\014ne)h
Fo(name)75 b Fp(to)61 b(b)5 b(e)61 b(a)1478 6997 y(function)51
b(with)g(the)g(giv)-5 b(en)52 b(formals)g(that)f(applies)i(those)e
(formals)h(to)f(the)g(corresp)5 b(onding)1478 7196 y(C)55
b(binding.)75 b Fo(C-name)12 b Fp(,)57 b(if)e(supplied,)i(should)g(b)5
b(e)55 b(a)g(string.)75 b(These)55 b(expand)h(in)-5 b(to)1478
7551 y Fl(\(define)88 b(temp)g(\(lookup-imported-binding)j
Fo(c-name)12 b Fl(\)\))1478 7750 y(\(define)88 b Fo(name)1652
7949 y Fl(\(lambda)h(\()p Fo(formal)104 b Fl(...\))1826
8149 y(\(call-imported-binding)91 b(temp)d Fo(formal)105
b Fl(...\)\)\))1536 8504 y Fp(If)71 b Fo(c-name)h Fp(is)59
b(not)f(supplied,)j(it)d(is)h(deriv)-5 b(ed)58 b(from)h
Fo(name)71 b Fp(b)-5 b(y)59 b(con)-5 b(v)g(erting)58
b(all)h(letters)f(to)1478 8703 y(lo)-5 b(w)g(ercase)56
b(and)g(replacing)g(`)p Fl(-)p Fp(')f(with)h(`)p 3911
8703 V 62 w('.)1478 9250 y Fi(8.4)269 b(Dynamic)90 b(loading)1478
9614 y Fp(External)38 b(co)5 b(de)38 b(can)h(b)5 b(e)39
b(loaded)g(in)-5 b(to)40 b(a)e(running)j(Sc)-5 b(heme)39
b(48|at)g(least)f(on)i(most)f(v)-9 b(arian)k(ts)1478
9813 y(of)60 b(Unix)h(and)g(on)h(Windo)-5 b(ws.)91 b(The)61
b(required)g(Sc)-5 b(heme)62 b(functions)f(are)g(in)g(the)g(structure)
1478 10012 y Fl(load-dynamic-externals)p Fp(.)4259 10511
y(94)p eop end
%%Page: 95 103
TeXDict begin 95 102 bop 830 1046 a Fp(T)-14 b(o)80 b(b)5
b(e)80 b(suitable)h(for)f(dynamic)h(loading,)87 b(the)80
b(externals)g(co)5 b(de)79 b(m)-5 b(ust)81 b(reside)g(in)g(a)581
1245 y(shared)56 b(ob)9 b(ject.)74 b(The)55 b(shared)h(ob)9
b(ject)55 b(m)-5 b(ust)56 b(de\014ne)g(a)f(function:)614
1559 y Fg(\017)83 b Fl(void)h(s48)p 1483 1559 53 7 v
63 w(on)p 1720 1559 V 64 w(load\(void\))581 1873 y Fp(The)59
b Fl(s48)p 1197 1873 V 64 w(on)p 1435 1873 V 63 w(load)g
Fp(is)h(run)g(up)5 b(on)59 b(loading)h(the)f(shared)h(ob)9
b(jects.)85 b(It)59 b(t)-5 b(ypically)59 b(con)-5 b(tains)581
2072 y(in)g(v)g(o)5 b(cations)64 b(of)75 b Fl(S48)p 1937
2072 V 63 w(EXPORT)p 2522 2072 V 64 w(FUNCTION)64 b Fp(to)f(mak)-5
b(e)63 b(the)f(functionalit)-5 b(y)63 b(de\014ned)g(b)-5
b(y)63 b(the)581 2271 y(shared)56 b(ob)9 b(ject)55 b(kno)-5
b(wn)56 b(to)f(Sc)-5 b(heme)56 b(48.)830 2470 y(The)e(shared)h(ob)9
b(ject)54 b(ma)-5 b(y)55 b(also)g(de\014ne)f(either)g(or)g(b)5
b(oth)54 b(of)g(the)g(follo)-5 b(wing)55 b(functions:)614
2784 y Fg(\017)83 b Fl(void)h(s48)p 1483 2784 V 63 w(on)p
1720 2784 V 64 w(unload\(void\))614 2983 y Fg(\017)f
Fl(void)h(s48)p 1483 2983 V 63 w(on)p 1720 2983 V 64
w(reload\(void\))581 3297 y Fp(Sc)-5 b(heme)80 b(48)f(calls)h
Fl(s48)p 2110 3297 V 63 w(on)p 2347 3297 V 63 w(unload)g
Fp(just)f(b)5 b(efore)79 b(it)f(unloads)j(the)e(shared)g(ob)9
b(ject.)145 b(If)581 3496 y Fl(s48)p 852 3496 V 63 w(on)p
1089 3496 V 64 w(reload)49 b Fp(is)f(presen)-5 b(t,)50
b(Sc)-5 b(heme)49 b(48)f(calls)h(it)e(when)h(it)g(loads)h(the)f(shared)
g(ob)9 b(ject)48 b(for)581 3695 y(the)65 b(second)g(time,)i(or)e(some)g
(new)g(v)-5 b(ersion)65 b(thereof.)102 b(If)64 b(it)h(is)g(not)f
(presen)-5 b(t,)68 b(Sc)-5 b(heme)66 b(48)581 3895 y(calls)56
b Fl(s48)p 1222 3895 V 63 w(on)p 1459 3895 V 63 w(load)g
Fp(instead.)75 b(\(More)55 b(on)h(that)e(later.\))830
4094 y(F)-14 b(or)68 b(Lin)-5 b(ux,)70 b(the)c(follo)-5
b(wing)68 b(commands)g(compile)f Fl(foo.c)h Fp(in)-5
b(to)67 b(a)g(\014le)f Fl(foo.so)i Fp(that)581 4293 y(can)56
b(b)5 b(e)55 b(loaded)g(dynamically)-14 b(.)581 4607
y Fl(\045)87 b(gcc)h(-c)g(-o)f(foo.o)h(foo.c)581 4806
y(\045)f(ld)h(-shared)g(-o)g(foo.so)g(foo.o)581 5120
y Fp(The)54 b(follo)-5 b(wing)56 b(pro)5 b(cedures)54
b(pro)-5 b(vide)55 b(the)f(basic)h(functionalit)-5 b(y)54
b(for)h(loading)g(shared)g(ob-)581 5319 y(jects)g(con)-5
b(taining)56 b(dynamic)g(externals:)614 5633 y Fg(\017)83
b Fl(\(load-dynamic-externals)k Fo(string)d(plete?)101
b(rr)-8 b(ep)g(e)g(at?)99 b(rr)-8 b(esume?)20 b Fl(\))102
b Fg(!)83 b Fo(dynamic-externals)614 5832 y Fg(\017)g
Fl(\(unload-dynamic-externals)88 b Fo(string)15 b Fl(\))83
b Fg(!)166 b Fo(dynamic-externals)614 6031 y Fg(\017)83
b Fl(\(reload-dynamic-externals)88 b Fo(dynamic-externals)14
b Fl(\))581 6345 y(Load-dynamic-externals)69 b Fp(loads)d(the)e(named)i
(shared)g(ob)9 b(jects.)102 b(The)65 b Fo(plete?)124
b Fp(argu-)581 6544 y(men)-5 b(t)67 b(determines)f(whether)g(Sc)-5
b(heme)67 b(48)f(app)5 b(ends)67 b(the)f(OS-sp)5 b(eci\014c)67
b(su\016x)f(\(t)-5 b(ypically)581 6743 y Fl(.so)71 b
Fp(for)f(Unix,)k(and)d Fl(.dll)g Fp(for)f(Windo)-5 b(ws\))71
b(to)f(the)f(name.)120 b(The)70 b Fo(rr)-8 b(ep)g(e)g(at?)138
b Fp(argumen)-5 b(t)581 6942 y(determines)81 b(ho)-5
b(w)83 b Fl(load-dynamic-externals)i Fp(b)5 b(eha)-5
b(v)g(es)81 b(if)f(it)g(is)h(called)g(again)g(with)581
7142 y(the)67 b(same)h(argumen)-5 b(t:)99 b(If)68 b(this)g(is)g(true,)i
(it)d(reloads)h(the)g(shared)g(ob)9 b(ject)67 b(\(and)g(calls)h(its)581
7341 y Fl(s48)p 852 7341 V 63 w(on)p 1089 7341 V 64 w(unload)61
b Fp(on)g(unloading)h(if)f(presen)-5 b(t,)62 b(and,)h(after)d
(reloading,)j Fl(s48)p 5339 7341 V 63 w(on)p 5576 7341
V 63 w(reload)f Fp(if)581 7540 y(presen)-5 b(t)75 b(or)e
Fl(s48)p 1670 7540 V 64 w(on)p 1908 7540 V 63 w(load)h
Fp(if)g(not\),)k(otherwise,)g(it)c(will)g(not)g(do)g(an)-5
b(ything.)130 b(The)73 b Fo(rr)-8 b(e-)581 7739 y(sume?)98
b Fp(argumen)-5 b(t)57 b(determines)g(if)f(an)h(image)g(subsequen)-5
b(tly)57 b(dump)5 b(ed)58 b(will)e(try)g(to)g(load)581
7939 y(the)42 b(shared)h(ob)9 b(ject)41 b(again)h(automatically)-14
b(.)70 b(\(The)41 b(shared)i(ob)9 b(jects)42 b(will)g(b)5
b(e)42 b(loaded)g(b)5 b(efore)581 8138 y(an)-5 b(y)49
b(record)g(resumers)i(run.\))72 b Fl(Load-dynamic-externals)52
b Fp(returns)e(a)f(handle)g(iden)-5 b(tify-)581 8337
y(ing)56 b(the)f(shared)h(ob)9 b(ject)55 b(just)g(loaded.)830
8537 y Fl(Unload-dynamic-externals)61 b Fp(unloads)c(the)f(shared)i(ob)
9 b(ject)55 b(asso)5 b(ciated)57 b(with)f(the)581 8736
y(handle)73 b(passed)g(as)g(its)f(argumen)-5 b(t,)77
b(previously)72 b(calling)h(its)f Fl(s48)p 4829 8736
V 63 w(on)p 5066 8736 V 64 w(unload)h Fp(function)581
8935 y(if)62 b(presen)-5 b(t.)96 b(Note)61 b(that)h(this)g(in)-5
b(v)c(alidates)63 b(all)g(external)e(bindings)j(asso)5
b(ciated)63 b(with)f(the)581 9134 y(shared)56 b(ob)9
b(ject;)55 b(referring)g(to)g(an)-5 b(y)56 b(of)f(them)g(will)h
(probably)g(crash)g(the)f(program.)830 9334 y Fl
(Reload-dynamic-externals)60 b Fp(will)c(reload)g(the)f(shared)i(ob)9
b(ject)55 b(named)h(b)-5 b(y)56 b(its)g(ar-)581 9533
y(gumen)-5 b(t)47 b(and)g(call)g(its)f Fl(s48)p 2270
9533 V 63 w(on)p 2507 9533 V 64 w(unload)h Fp(function)f(b)5
b(efore)46 b(unloading,)k(and,)f(after)c(reload-)581
9732 y(ing,)56 b Fl(s48)p 1175 9732 V 63 w(on)p 1412
9732 V 63 w(reload)h Fp(if)e(presen)-5 b(t)56 b(or)f
Fl(s48)p 3248 9732 V 64 w(on)p 3486 9732 V 63 w(load)h
Fp(if)f(not.)614 10012 y Fg(\017)83 b Fl(\(import-dynamic-externals)88
b Fo(string)15 b Fl(\))83 b Fg(!)g Fo(dynamic-externals)3362
10511 y Fp(95)p eop end
%%Page: 96 104
TeXDict begin 96 103 bop 1478 1046 a Fp(This)37 b(pro)5
b(cedure)37 b(represen)-5 b(ts)38 b(the)f(exp)5 b(ected)35
b(most)i(usage)h(for)e(loading)i(dynamic-externals.)1478
1245 y(It)55 b(is)h(b)5 b(est)55 b(explained)g(b)-5 b(y)56
b(its)f(de\014nition:)1478 1580 y Fl(\(define)88 b
(\(import-dynamic-externals)k(name\))1652 1780 y
(\(load-dynamic-externals)f(name)d(#t)g(#f)f(#t\)\))1478
2333 y Fi(8.5)269 b(Accessing)90 b(Sc)-7 b(heme)89 b(data)g(from)i(C)
1478 2698 y Fp(The)70 b(C)h(header)g(\014le)g Fl(scheme48.h)h
Fp(pro)-5 b(vides)72 b(access)f(to)f(Sc)-5 b(heme)72
b(48)e(data)h(structures.)1478 2897 y(The)f(t)-5 b(yp)5
b(e)69 b Fl(s48)p 2493 2897 53 7 v 63 w(value)i Fp(is)f(used)h(for)e
(Sc)-5 b(heme)71 b(v)-9 b(alues.)117 b(When)70 b(the)g(t)-5
b(yp)5 b(e)69 b(of)g(a)h(v)-9 b(alue)70 b(is)1478 3096
y(kno)-5 b(wn,)50 b(suc)-5 b(h)49 b(as)g(the)e(in)-5
b(teger)48 b(returned)g(b)-5 b(y)51 b Fl(vector-length)f
Fp(or)e(the)g(b)5 b(o)g(olean)47 b(returned)1478 3296
y(b)-5 b(y)60 b Fl(pair?)p Fp(,)f(the)e(corresp)5 b(onding)59
b(C)e(pro)5 b(cedure)57 b(returns)h(a)g(C)f(v)-9 b(alue)58
b(of)f(the)g(appropriate)1478 3495 y(t)-5 b(yp)5 b(e,)55
b(and)g(not)h(a)f Fl(s48)p 2925 3495 V 63 w(value)p Fp(.)75
b(Predicates)55 b(return)h Fl(1)f Fp(for)g(true)g(and)h
Fl(0)g Fp(for)f(false.)1478 3964 y Fc(8.5.1)225 b(Constan)-6
b(ts)1478 4271 y Fp(The)55 b(follo)-5 b(wing)56 b(macros)g(denote)f(Sc)
-5 b(heme)56 b(constan)-5 b(ts:)1727 4606 y Fg(\017)83
b Fl(S48)p 2164 4606 V 63 w(FALSE)56 b Fp(is)g Fl(#f)p
Fp(.)1727 4941 y Fg(\017)83 b Fl(S48)p 2164 4941 V 63
w(TRUE)56 b Fp(is)g Fl(#t)p Fp(.)1727 5276 y Fg(\017)83
b Fl(S48)p 2164 5276 V 63 w(NULL)56 b Fp(is)g(the)f(empt)-5
b(y)56 b(list.)1727 5611 y Fg(\017)83 b Fl(S48)p 2164
5611 V 63 w(UNSPECIFIC)66 b Fp(is)g(a)e(v)-9 b(alue)64
b(used)i(for)e(functions)h(whic)-5 b(h)65 b(ha)-5 b(v)g(e)66
b(no)e(meaningful)1893 5810 y(return)e(v)-9 b(alue)62
b(\(in)h(Sc)-5 b(heme)63 b(48)g(this)g(v)-9 b(alue)62
b(returned)g(b)-5 b(y)63 b(the)f(n)-5 b(ullary)63 b(pro)5
b(cedure)1893 6009 y Fl(unspecific)57 b Fp(in)f(the)f(structure)g
Fl(util)p Fp(\).)1727 6344 y Fg(\017)83 b Fl(S48)p 2164
6344 V 63 w(EOF)65 b Fp(is)f(the)g(end-of-\014le)g(ob)9
b(ject)64 b(\(in)f(Sc)-5 b(heme)65 b(48)f(this)g(v)-9
b(alue)64 b(is)g(returned)g(b)-5 b(y)1893 6544 y(the)55
b(n)-5 b(ullary)56 b(pro)5 b(cedure)55 b Fl(eof-object)i
Fp(in)f(the)f(structure)g Fl(i/o-internal)p Fp(\).)1478
7012 y Fc(8.5.2)225 b(Con)-6 b(v)g(erting)74 b(v)-12
b(alues)1478 7320 y Fp(The)53 b(follo)-5 b(wing)55 b(macros)f(and)h
(functions)f(con)-5 b(v)g(ert)53 b(v)-9 b(alues)54 b(b)5
b(et)-5 b(w)g(een)54 b(Sc)-5 b(heme)54 b(and)g(C)g(rep-)1478
7520 y(resen)-5 b(tations.)89 b(The)60 b(`extract')f(ones)i(con)-5
b(v)g(ert)60 b(from)g(Sc)-5 b(heme)61 b(to)f(C)g(and)h(the)e(`en)-5
b(ter's)61 b(go)1478 7719 y(the)55 b(other)g(w)-5 b(a)g(y)-14
b(.)1511 8020 y Fg(\017)83 b Fl(int)582 b(S48)p 2791
8020 V 63 w(EXTRACT)p 3463 8020 V 64 w(BOOLEAN\(s48)p
4484 8020 V 65 w(value\))1511 8219 y Fg(\017)83 b Fl(long)499
b(s48)p 2795 8219 V 63 w(extract)p 3467 8219 V 64 w(char\(s48)p
4227 8219 V 64 w(value\))1511 8418 y Fg(\017)83 b Fl(char)h(*)332
b(s48)p 2799 8418 V 63 w(extract)p 3471 8418 V 64 w(string\(s48)p
4405 8418 V 65 w(value\))1511 8618 y Fg(\017)83 b Fl(char)h(*)332
b(s48)p 2799 8618 V 63 w(extract)p 3471 8618 V 64 w(byte)p
3883 8618 V 64 w(vector\(s48)p 4817 8618 V 64 w(value\))1511
8817 y Fg(\017)83 b Fl(long)499 b(s48)p 2795 8817 V 63
w(extract)p 3467 8817 V 64 w(integer\(s48)p 4488 8817
V 65 w(value\))1511 9016 y Fg(\017)83 b Fl(double)333
b(s48)p 2803 9016 V 63 w(extract)p 3475 9016 V 64 w(double\(s48)p
4409 9016 V 65 w(value\))1511 9215 y Fg(\017)83 b Fl(s48)p
1948 9215 V 63 w(value)h(S48)p 2791 9215 V 63 w(ENTER)p
3289 9215 V 64 w(BOOLEAN\(int\))1511 9415 y Fg(\017)f
Fl(s48)p 1948 9415 V 63 w(value)h(s48)p 2791 9415 V 63
w(enter)p 3289 9415 V 64 w(char\(long\))1511 9614 y Fg(\017)f
Fl(s48)p 1948 9614 V 63 w(value)h(s48)p 2791 9614 V 63
w(enter)p 3289 9614 V 64 w(byte)p 3701 9614 V 64 w(vector\(char)g(*,)g
(long\))978 b Fp(\(ma)-5 b(y)56 b(GC\))1511 9813 y Fg(\017)83
b Fl(s48)p 1948 9813 V 63 w(value)h(s48)p 2791 9813 V
63 w(enter)p 3289 9813 V 64 w(integer\(long\))1993 b
Fp(\(ma)-5 b(y)56 b(GC\))1511 10012 y Fg(\017)83 b Fl(s48)p
1948 10012 V 63 w(value)h(s48)p 2791 10012 V 63 w(enter)p
3289 10012 V 64 w(double\(double\))1906 b Fp(\(ma)-5
b(y)56 b(GC\))4259 10511 y(96)p eop end
%%Page: 97 105
TeXDict begin 97 104 bop 581 1046 a Fl(S48)p 852 1046
53 7 v 63 w(EXTRACT)p 1524 1046 V 64 w(BOOLEAN)38 b Fp(is)g(false)f(if)
g(its)g(argumen)-5 b(t)38 b(is)f Fl(#f)g Fp(and)h(true)e(otherwise.)68
b Fl(S48)p 5867 1046 V 63 w(ENTER)p 6365 1046 V 64 w(BOOLEAN)581
1245 y Fp(is)56 b Fl(#f)g Fp(if)f(its)h(argumen)-5 b(t)56
b(is)g(zero)f(and)g Fl(#t)h Fp(otherwise.)830 1445 y(The)77
b Fl(s48)p 1464 1445 V 64 w(extract)p 2137 1445 V 64
w(char)g Fp(function)g(extracts)g(the)f(scalar)i(v)-9
b(alue)77 b(from)g(a)g(Sc)-5 b(heme)581 1644 y(c)g(haracter)51
b(as)g(a)g(C)g Fl(long)p Fp(.)73 b(Con)-5 b(v)g(ersely)-14
b(,)53 b Fl(s48)p 3414 1644 V 63 w(enter)p 3912 1644
V 63 w(char)f Fp(creates)e(a)h(Sc)-5 b(heme)52 b(c)-5
b(haracter)581 1843 y(from)56 b(a)f(scalar)h(v)-9 b(alue.)73
b(\(Note)54 b(that)h(ASCI)5 b(I)55 b(v)-9 b(alues)55
b(are)g(also)h(scalar)g(v)-9 b(alues.\))830 2042 y(The)44
b Fl(s48)p 1431 2042 V 63 w(extract)p 2103 2042 V 64
w(byte)p 2515 2042 V 64 w(vector)g Fp(function)g(returns)g(a)g(p)5
b(oin)-5 b(ter)44 b(to)f(the)h(actual)f(stor-)581 2242
y(age)61 b(used)h(b)-5 b(y)62 b(the)f(b)-5 b(yte)61 b(v)-5
b(ector.)91 b(These)62 b(p)5 b(oin)-5 b(ters)62 b(are)f(v)-9
b(alid)61 b(only)h(un)-5 b(til)62 b(the)f(next)f(GC;)581
2441 y(see)c(Section)f(8.7.)830 2640 y(The)39 b(second)h(argumen)-5
b(t)39 b(to)g Fl(s48)p 2859 2640 V 63 w(enter)p 3357
2640 V 64 w(byte)p 3769 2640 V 63 w(vector)h Fp(is)g(the)e(length)h(of)
g(b)-5 b(yte)38 b(v)-5 b(ector.)830 2839 y Fl(s48)p 1101
2839 V 64 w(enter)p 1600 2839 V 63 w(integer\(\))75 b
Fp(needs)f(to)f(allo)5 b(cate)73 b(storage)h(when)f(its)h(argumen)-5
b(t)74 b(is)g(to)5 b(o)581 3039 y(large)61 b(to)f(\014t)g(in)h(a)f(Sc)
-5 b(heme)62 b(48)e(\014xn)-5 b(um.)91 b(In)60 b(cases)h(where)g(the)f
(n)-5 b(um)g(b)5 b(er)62 b(is)f(kno)-5 b(wn)61 b(to)f(\014t)581
3238 y(within)53 b(a)g(\014xn)-5 b(um)54 b(\(curren)-5
b(tly)52 b(30)h(bits)g(including)h(the)f(sign\),)g(the)g(follo)-5
b(wing)53 b(pro)5 b(cedures)581 3437 y(can)61 b(b)5 b(e)60
b(used.)90 b(These)61 b(ha)-5 b(v)g(e)61 b(the)g(disadv)-9
b(an)k(tage)61 b(of)f(only)h(ha)-5 b(ving)61 b(a)g(limited)f(range,)j
(but)581 3636 y(the)e(adv)-9 b(an)k(tage)61 b(of)f(nev)-5
b(er)61 b(causing)h(a)f(garbage)h(collection.)90 b Fl(S48)p
4762 3636 V 64 w(FIXNUM)p 5348 3636 V 63 w(P)62 b Fp(is)f(a)g(macro)581
3836 y(that)55 b(true)g(if)g(its)h(argumen)-5 b(t)56
b(is)g(a)f(\014xn)-5 b(um)57 b(and)e(false)h(otherwise.)614
4134 y Fg(\017)83 b Fl(int)582 b(S48)p 1894 4134 V 63
w(TRUE)p 2305 4134 V 64 w(P\(s48)p 2804 4134 V 63 w(value\))614
4334 y Fg(\017)83 b Fl(int)582 b(S48)p 1894 4334 V 63
w(FALSE)p 2392 4334 V 64 w(P\(s48)p 2891 4334 V 64 w(value\))581
4633 y(S48)p 852 4633 V 63 w(TRUE)p 1263 4633 V 64 w(P)69
b Fp(is)g(true)g(if)g(its)g(argumen)-5 b(t)69 b(is)h
Fl(S48)p 3637 4633 V 63 w(TRUE)f Fp(and)h Fl(S48)p 4715
4633 V 63 w(FALSE)p 5213 4633 V 64 w(P)f Fp(is)g(true)g(if)f(its)581
4832 y(argumen)-5 b(t)56 b(is)g Fl(S48)p 1762 4832 V
63 w(FALSE)p Fp(.)614 5131 y Fg(\017)83 b Fl(int)582
b(S48)p 1894 5131 V 63 w(FIXNUM)p 2479 5131 V 64 w(P\(s48)p
2978 5131 V 64 w(value\))614 5330 y Fg(\017)83 b Fl(long)499
b(s48)p 1898 5330 V 64 w(extract)p 2571 5330 V 63 w(fixnum\(s48)p
3504 5330 V 65 w(value\))614 5529 y Fg(\017)83 b Fl(s48)p
1051 5529 V 64 w(value)h(s48)p 1895 5529 V 63 w(enter)p
2393 5529 V 63 w(fixnum\(long\))614 5729 y Fg(\017)f
Fl(long)499 b(S48)p 1898 5729 V 64 w(MAX)p 2223 5729
V 63 w(FIXNUM)p 2808 5729 V 64 w(VALUE)614 5928 y Fg(\017)83
b Fl(long)499 b(S48)p 1898 5928 V 64 w(MIN)p 2223 5928
V 63 w(FIXNUM)p 2808 5928 V 64 w(VALUE)581 6227 y Fp(An)45
b(error)f(is)i(signalled)g(if)57 b Fl(s48)p 2494 6227
V 64 w(extract)p 3167 6227 V 64 w(fixnum)p Fp('s)46 b(argumen)-5
b(t)46 b(is)f(not)g(a)g(\014xn)-5 b(um)46 b(or)e(if)h(the)581
6426 y(argumen)-5 b(t)67 b(to)e Fl(s48)p 1819 6426 V
63 w(enter)p 2317 6426 V 64 w(fixnum)i Fp(is)f(less)h(than)f
Fl(S48)p 4123 6426 V 63 w(MIN)p 4447 6426 V 63 w(FIXNUM)p
5032 6426 V 64 w(VALUE)h Fp(or)e(greater)581 6625 y(than)56
b Fl(S48)p 1240 6625 V 63 w(MAX)p 1564 6625 V 63 w(FIXNUM)p
2149 6625 V 64 w(VALUE)g Fp(\()p Fg(\000)p Fp(2)2971
6565 y Fj(29)3167 6625 y Fp(and)g(2)3573 6565 y Fj(29)3750
6625 y Fg(\000)37 b Fp(1)56 b(in)g(the)e(curren)-5 b(t)56
b(system\).)614 6924 y Fg(\017)83 b Fl(s48)p 1051 6924
V 64 w(value)h(s48)p 1895 6924 V 63 w(enter)p 2393 6924
V 63 w(string)p 2978 6924 V 64 w(latin)p 3477 6924 V
64 w(1\(char*\);)1257 b Fp(\(ma)-5 b(y)55 b(GC\))614
7123 y Fg(\017)83 b Fl(s48)p 1051 7123 V 64 w(value)h(s48)p
1895 7123 V 63 w(enter)p 2393 7123 V 63 w(string)p 2978
7123 V 64 w(latin)p 3477 7123 V 64 w(1)p 3628 7123 V
63 w(n\(char*,)g(long\);)588 b Fp(\(ma)-5 b(y)55 b(GC\))614
7323 y Fg(\017)83 b Fl(void)499 b(s48)p 1898 7323 V 64
w(copy)p 2310 7323 V 63 w(latin)p 2808 7323 V 64 w(1)p
2959 7323 V 63 w(to)p 3196 7323 V 63 w(string\(char*,)85
b(s48)p 4736 7323 V 63 w(value\);)614 7522 y Fg(\017)e
Fl(void)499 b(s48)p 1898 7522 V 64 w(copy)p 2310 7522
V 63 w(latin)p 2808 7522 V 64 w(1)p 2959 7522 V 63 w(to)p
3196 7522 V 63 w(string)p 3781 7522 V 63 w(n\(char*,)85
b(long,)f(s48)p 5405 7522 V 63 w(value\);)614 7721 y
Fg(\017)f Fl(void)499 b(s48)p 1898 7721 V 64 w(copy)p
2310 7721 V 63 w(string)p 2895 7721 V 64 w(to)p 3133
7721 V 63 w(latin)p 3631 7721 V 63 w(1\(s48)p 4129 7721
V 64 w(value,)84 b(char*\);)614 7920 y Fg(\017)f Fl(void)499
b(s48)p 1898 7920 V 64 w(copy)p 2310 7920 V 63 w(string)p
2895 7920 V 64 w(to)p 3133 7920 V 63 w(latin)p 3631 7920
V 63 w(1)p 3781 7920 V 63 w(n\(s48)p 4279 7920 V 64 w(value,)84
b(long,)g(long,)g(char*\);)614 8120 y Fg(\017)f Fl(s48)p
1051 8120 V 64 w(value)h(s48)p 1895 8120 V 63 w(enter)p
2393 8120 V 63 w(string)p 2978 8120 V 64 w(utf)p 3303
8120 V 64 w(8\(char*\);)1431 b Fp(\(ma)-5 b(y)55 b(GC\))614
8319 y Fg(\017)83 b Fl(s48)p 1051 8319 V 64 w(value)h(s48)p
1895 8319 V 63 w(enter)p 2393 8319 V 63 w(string)p 2978
8319 V 64 w(utf)p 3303 8319 V 64 w(8)p 3454 8319 V 62
w(n\(char*,)h(long\);)762 b Fp(\(ma)-5 b(y)55 b(GC\))614
8518 y Fg(\017)83 b Fl(long)499 b(s48)p 1898 8518 V 64
w(string)p 2484 8518 V 63 w(utf)p 2808 8518 V 64 w(8)p
2959 8518 V 63 w(length\(s48)p 3892 8518 V 64 w(value\);)614
8717 y Fg(\017)83 b Fl(long)499 b(s48)p 1898 8717 V 64
w(string)p 2484 8717 V 63 w(utf)p 2808 8717 V 64 w(8)p
2959 8717 V 63 w(length)p 3544 8717 V 63 w(n\(s48)p 4042
8717 V 64 w(value,)84 b(long,)g(long\);)614 8917 y Fg(\017)f
Fl(void)499 b(s48)p 1898 8917 V 64 w(copy)p 2310 8917
V 63 w(string)p 2895 8917 V 64 w(to)p 3133 8917 V 63
w(utf)p 3457 8917 V 63 w(8\(s48)p 3955 8917 V 64 w(value,)84
b(char*\);)614 9116 y Fg(\017)f Fl(void)499 b(s48)p 1898
9116 V 64 w(copy)p 2310 9116 V 63 w(string)p 2895 9116
V 64 w(to)p 3133 9116 V 63 w(utf)p 3457 9116 V 63 w(8)p
3607 9116 V 63 w(n\(s48)p 4105 9116 V 64 w(value,)84
b(long,)g(long,)g(char*\);)581 9415 y Fp(The)41 b Fl(s48)p
1179 9415 V 63 w(enter)p 1677 9415 V 63 w(string)p 2262
9415 V 64 w(latin)p 2761 9415 V 64 w(1)f Fp(function)h(creates)f(a)g
(Sc)-5 b(heme)41 b(string,)j(initializing)d(its)581 9614
y(con)-5 b(ten)g(ts)38 b(from)f(its)g(NUL-terminated,)i(Latin-1-enco)5
b(ded)38 b(argumen)-5 b(t.)68 b(The)37 b Fl(s48)p 5696
9614 V 63 w(enter)p 6194 9614 V 64 w(string)p 6780 9614
V 64 w(latin)p 7279 9614 V 63 w(1)p 7429 9614 V 63 w(n)581
9813 y Fp(function)43 b(do)5 b(es)43 b(the)f(same,)k(but)d(allo)-5
b(ws)44 b(sp)5 b(ecifying)43 b(the)f(length)h(explicitly|no)f(NUL)g
(ter-)581 10012 y(minator)56 b(is)g(necessary)-14 b(.)3362
10511 y(97)p eop end
%%Page: 98 106
TeXDict begin 98 105 bop 1727 1046 a Fp(The)66 b Fl(s48)p
2350 1046 53 7 v 63 w(copy)p 2761 1046 V 63 w(latin)p
3259 1046 V 64 w(1)p 3410 1046 V 63 w(to)p 3647 1046
V 63 w(string)h Fp(function)e(copies)i(Latin-1-enco)5
b(ded)66 b(c)-5 b(harac-)1478 1245 y(ters)44 b(from)g(its)h(\014rst)f
(NUL-terminated)f(argumen)-5 b(t)45 b(to)f(the)g(Sc)-5
b(heme)44 b(string)h(that)f(is)h(its)f(sec-)1478 1445
y(ond)60 b(argumen)-5 b(t.)86 b(The)60 b Fl(s48)p 3241
1445 V 63 w(copy)p 3652 1445 V 63 w(latin)p 4150 1445
V 64 w(1)p 4301 1445 V 63 w(to)p 4538 1445 V 63 w(string)p
5123 1445 V 64 w(n)f Fp(do)5 b(es)60 b(the)f(same,)i(but)e(allo)-5
b(ws)1478 1644 y(sp)5 b(ecifying)37 b(the)f(n)-5 b(um)g(b)5
b(er)38 b(of)f(c)-5 b(haracters)37 b(explicitly)-14 b(.)67
b(The)37 b Fl(s48)p 5385 1644 V 63 w(copy)p 5796 1644
V 64 w(string)p 6382 1644 V 64 w(to)p 6620 1644 V 63
w(latin)p 7118 1644 V 63 w(1)1478 1843 y Fp(function)64
b(con)-5 b(v)g(erts)64 b(the)f(c)-5 b(haracters)65 b(of)e(the)h(Sc)-5
b(heme)64 b(string)h(sp)5 b(eci\014ed)64 b(as)g(the)g(\014rst)g(ar-)
1478 2042 y(gumen)-5 b(t)41 b(in)-5 b(to)41 b(Latin-1)f(and)h(writes)g
(them)f(in)-5 b(to)41 b(the)f(string)h(sp)5 b(eci\014ed)41
b(as)g(the)g(second)g(argu-)1478 2242 y(men)-5 b(t.)68
b(\(Note)35 b(that)i(it)f(do)5 b(es)37 b(not)g(NUL-terminate)f(the)g
(result.\))68 b(The)37 b Fl(s48)p 6119 2242 V 63 w(copy)p
6530 2242 V 63 w(string)p 7115 2242 V 64 w(to)p 7353
2242 V 63 w(latin)p 7851 2242 V 64 w(1)p 8002 2242 V
63 w(n)1478 2441 y Fp(function)59 b(do)5 b(es)60 b(the)f(same,)i(but)e
(allo)-5 b(ws)61 b(sp)5 b(ecifying)59 b(a)g(starting)h(index)f(and)h(a)
g(c)-5 b(haracter)1478 2640 y(coun)g(t)55 b(in)-5 b(to)56
b(the)f(source)h(string.)1727 2841 y(The)84 b Fl(s48)p
2368 2841 V 63 w(enter)p 2866 2841 V 64 w(string)p 3452
2841 V 63 w(utf)p 3776 2841 V 64 w(8)g Fp(function)f(creates)h(a)g(Sc)
-5 b(heme)84 b(string,)92 b(initializ-)1478 3040 y(ing)e(its)g(con)-5
b(ten)g(ts)91 b(from)f(its)g(NUL-terminated,)98 b(UTF-8-enco)5
b(ded)91 b(argumen)-5 b(t.)178 b(The)1478 3239 y Fl(s48)p
1749 3239 V 63 w(enter)p 2247 3239 V 64 w(string)p 2833
3239 V 63 w(utf)p 3157 3239 V 64 w(8)p 3308 3239 V 63
w(n)71 b Fp(function)g(do)5 b(es)71 b(the)g(same,)76
b(but)71 b(allo)-5 b(ws)72 b(sp)5 b(ecifying)71 b(the)1478
3438 y(length)55 b(explicitly|no)g(NUL)f(terminator)h(is)h(necessary)
-14 b(.)1727 3639 y(The)48 b Fl(s48)p 2332 3639 V 63
w(string)p 2917 3639 V 64 w(utf)p 3242 3639 V 63 w(8)p
3392 3639 V 63 w(length)h Fp(function)e(computes)i(the)e(length)h(that)
f(the)g(UTF-)1478 3838 y(8)k(enco)5 b(ding)52 b(of)f(its)g(argumen)-5
b(t)53 b(\(a)e(Sc)-5 b(heme)52 b(string\))f(w)-5 b(ould)52
b(o)5 b(ccup)-5 b(y)-14 b(,)53 b(not)e(including)h(NUL)1478
4038 y(termination.)71 b(The)47 b Fl(s48)p 3048 4038
V 63 w(string)p 3633 4038 V 64 w(utf)p 3958 4038 V 63
w(8)p 4108 4038 V 63 w(length)h Fp(function)f(do)5 b(es)47
b(the)f(same,)j(but)e(allo)-5 b(ws)1478 4237 y(sp)5 b(ecifying)55
b(a)g(starting)h(index)f(and)h(a)f(coun)-5 b(t)56 b(in)-5
b(to)56 b(the)f(input)g(string.)1727 4437 y(The)37 b
Fl(s48)p 2321 4437 V 63 w(copy)p 2732 4437 V 63 w(string)p
3317 4437 V 64 w(to)p 3555 4437 V 63 w(utf)p 3879 4437
V 64 w(8)g Fp(function)g(con)-5 b(v)g(erts)37 b(the)f(c)-5
b(haracters)37 b(of)g(the)g(Sc)-5 b(heme)1478 4637 y(string)44
b(sp)5 b(eci\014ed)44 b(as)h(the)e(\014rst)i(argumen)-5
b(t)44 b(in)-5 b(to)45 b(UTF-8)f(and)g(writes)g(them)g(in)-5
b(to)44 b(the)g(string)1478 4836 y(sp)5 b(eci\014ed)68
b(as)h(the)f(second)h(argumen)-5 b(t.)114 b(\(Note)66
b(that)i(it)g(do)5 b(es)69 b(not)f(NUL-terminate)f(the)1478
5035 y(result.\))104 b(The)65 b Fl(s48)p 2722 5035 V
64 w(copy)p 3134 5035 V 63 w(string)p 3719 5035 V 64
w(to)p 3957 5035 V 63 w(utf)p 4281 5035 V 63 w(8)p 4431
5035 V 63 w(n)h Fp(function)f(do)5 b(es)66 b(the)f(same,)k(but)c(allo)
-5 b(ws)1478 5234 y(sp)5 b(ecifying)55 b(a)g(starting)h(index)f(and)h
(a)f(c)-5 b(haracter)55 b(coun)-5 b(t)56 b(in)-5 b(to)56
b(the)f(source)h(string.)1478 5706 y Fc(8.5.3)225 b(C)74
b(v)-6 b(ersions)76 b(of)f(Sc)-6 b(heme)74 b(pro)6 b(cedures)1478
6015 y Fp(The)46 b(follo)-5 b(wing)48 b(macros)f(and)g(pro)5
b(cedures)47 b(are)f(C)h(v)-5 b(ersions)48 b(of)e(Sc)-5
b(heme)47 b(pro)5 b(cedures.)71 b(The)1478 6215 y(names)56
b(w)-5 b(ere)55 b(deriv)-5 b(ed)56 b(b)-5 b(y)56 b(replacing)f(`)p
Fl(-)p Fp(')h(with)f(`)p 4561 6215 V 63 w(',)h(`)p Fl(?)p
Fp(')74 b(with)55 b(`)p 5449 6215 V 63 w Fl(P)p Fp(',)h(and)g(dropping)
g(`)p Fl(!)p Fp(.)1511 6517 y Fg(\017)83 b Fl(int)582
b(S48)p 2791 6517 V 63 w(EQ)p 3028 6517 V 63 w(P\(s48)p
3526 6517 V 64 w(value,)84 b(s48)p 4457 6517 V 63 w(VALUE\))1511
6717 y Fg(\017)f Fl(int)582 b(S48)p 2791 6717 V 63 w(CHAR)p
3202 6717 V 63 w(P\(s48)p 3700 6717 V 64 w(value\))1511
7018 y Fg(\017)83 b Fl(int)582 b(S48)p 2791 7018 V 63
w(PAIR)p 3202 7018 V 63 w(P\(s48)p 3700 7018 V 64 w(value\))1511
7218 y Fg(\017)83 b Fl(s48)p 1948 7218 V 63 w(value)h(S48)p
2791 7218 V 63 w(CAR\(s48)p 3463 7218 V 64 w(value\))1511
7417 y Fg(\017)f Fl(s48)p 1948 7417 V 63 w(value)h(S48)p
2791 7417 V 63 w(CDR\(s48)p 3463 7417 V 64 w(value\))1511
7616 y Fg(\017)f Fl(void)499 b(S48)p 2795 7616 V 63 w(SET)p
3119 7616 V 63 w(CAR\(s48)p 3791 7616 V 64 w(value,)84
b(s48)p 4722 7616 V 64 w(value\))1511 7815 y Fg(\017)f
Fl(void)499 b(S48)p 2795 7815 V 63 w(SET)p 3119 7815
V 63 w(CDR\(s48)p 3791 7815 V 64 w(value,)84 b(s48)p
4722 7815 V 64 w(value\))1511 8015 y Fg(\017)f Fl(s48)p
1948 8015 V 63 w(value)h(s48)p 2791 8015 V 63 w(cons\(s48)p
3550 8015 V 65 w(value,)g(s48)p 4482 8015 V 63 w(value\))1410
b Fp(\(ma)-5 b(y)56 b(GC\))1511 8214 y Fg(\017)83 b Fl(long)499
b(s48)p 2795 8214 V 63 w(length\(s48)p 3728 8214 V 65
w(value\))1511 8515 y Fg(\017)83 b Fl(int)582 b(S48)p
2791 8515 V 63 w(VECTOR)p 3376 8515 V 64 w(P\(s48)p 3875
8515 V 63 w(value\))1511 8715 y Fg(\017)83 b Fl(long)499
b(S48)p 2795 8715 V 63 w(VECTOR)p 3380 8715 V 64 w(LENGTH\(s48)p
4314 8715 V 64 w(value\))1511 8914 y Fg(\017)83 b Fl(s48)p
1948 8914 V 63 w(value)h(S48)p 2791 8914 V 63 w(VECTOR)p
3376 8914 V 64 w(REF\(s48)p 4049 8914 V 64 w(value,)g(long\))1511
9113 y Fg(\017)f Fl(void)499 b(S48)p 2795 9113 V 63 w(VECTOR)p
3380 9113 V 64 w(SET\(s48)p 4053 9113 V 64 w(value,)84
b(long,)g(s48)p 5503 9113 V 63 w(value\))1511 9312 y
Fg(\017)f Fl(s48)p 1948 9312 V 63 w(value)h(s48)p 2791
9312 V 63 w(make)p 3202 9312 V 64 w(vector\(long,)h(s48)p
4656 9312 V 63 w(value\))1236 b Fp(\(ma)-5 b(y)56 b(GC\))1511
9614 y Fg(\017)83 b Fl(int)582 b(S48)p 2791 9614 V 63
w(STRING)p 3376 9614 V 64 w(P\(s48)p 3875 9614 V 63 w(value\))1511
9813 y Fg(\017)83 b Fl(long)499 b(S48)p 2795 9813 V 63
w(STRING)p 3380 9813 V 64 w(LENGTH\(s48)p 4314 9813 V
64 w(value\))1511 10012 y Fg(\017)83 b Fl(long)499 b(S48)p
2795 10012 V 63 w(STRING)p 3380 10012 V 64 w(REF\(s48)p
4053 10012 V 64 w(value,)84 b(long\))4259 10511 y Fp(98)p
eop end
%%Page: 99 107
TeXDict begin 99 106 bop 614 1046 a Fg(\017)83 b Fl(void)499
b(S48)p 1898 1046 53 7 v 64 w(STRING)p 2484 1046 V 63
w(SET\(s48)p 3156 1046 V 64 w(value,)84 b(long,)g(long\))614
1245 y Fg(\017)f Fl(s48)p 1051 1245 V 64 w(value)h(s48)p
1895 1245 V 63 w(make)p 2306 1245 V 63 w(string\(long,)h(char\))1648
b Fp(\(ma)-5 b(y)55 b(GC\))614 1517 y Fg(\017)83 b Fl(int)582
b(S48)p 1894 1517 V 63 w(SYMBOL)p 2479 1517 V 64 w(P\(s48)p
2978 1517 V 64 w(value\))614 1716 y Fg(\017)83 b Fl(s48)p
1051 1716 V 64 w(value)h(s48)p 1895 1716 V 63 w(SYMBOL)p
2480 1716 V 64 w(TO)p 2718 1716 V 63 w(STRING\(s48)p
3651 1716 V 64 w(value\))614 1987 y Fg(\017)f Fl(int)582
b(S48)p 1894 1987 V 63 w(BYTE)p 2305 1987 V 64 w(VECTOR)p
2891 1987 V 64 w(P\(s48)p 3390 1987 V 63 w(value\))614
2187 y Fg(\017)83 b Fl(long)499 b(S48)p 1898 2187 V 64
w(BYTE)p 2310 2187 V 63 w(VECTOR)p 2895 2187 V 64 w(LENGTH\(s48)p
3829 2187 V 64 w(value\))614 2386 y Fg(\017)83 b Fl(char)499
b(S48)p 1898 2386 V 64 w(BYTE)p 2310 2386 V 63 w(VECTOR)p
2895 2386 V 64 w(REF\(s48)p 3568 2386 V 64 w(value,)84
b(long\))614 2585 y Fg(\017)f Fl(void)499 b(S48)p 1898
2585 V 64 w(BYTE)p 2310 2585 V 63 w(VECTOR)p 2895 2585
V 64 w(SET\(s48)p 3568 2585 V 64 w(value,)84 b(long,)g(int\))614
2784 y Fg(\017)f Fl(s48)p 1051 2784 V 64 w(value)h(s48)p
1895 2784 V 63 w(make)p 2306 2784 V 63 w(byte)p 2717
2784 V 64 w(vector\(long,)h(int\))1323 b Fp(\(ma)-5 b(y)55
b(GC\))581 3328 y Fi(8.6)270 b(Calling)90 b(Sc)-7 b(heme)89
b(functions)i(from)f(C)581 3691 y Fp(External)60 b(co)5
b(de)60 b(that)g(has)i(b)5 b(een)60 b(called)h(from)g(Sc)-5
b(heme)61 b(can)g(call)g(bac)-5 b(k)60 b(to)h(Sc)-5 b(heme)61
b(pro-)581 3891 y(cedures)56 b(using)g(the)f(follo)-5
b(wing)56 b(function.)614 4162 y Fg(\017)83 b Fl(s48)p
1051 4162 V 64 w(value)h(s48)p 1895 4162 V 63 w(call)p
2306 4162 V 63 w(scheme\(s48)p 3239 4162 V 65 w(value)g(p,)f(long)h
(nargs,)g(...\))581 4433 y Fp(This)71 b(calls)g(the)e(Sc)-5
b(heme)71 b(pro)5 b(cedure)70 b Fl(p)g Fp(on)g Fl(nargs)h
Fp(argumen)-5 b(ts,)75 b(whic)-5 b(h)71 b(are)f(passed)h(as)581
4633 y(additional)f(argumen)-5 b(ts)71 b(to)e Fl(s48)p
2690 4633 V 63 w(call)p 3101 4633 V 63 w(scheme)p Fp(.)117
b(There)69 b(ma)-5 b(y)70 b(b)5 b(e)69 b(at)g(most)h(t)-5
b(w)g(elv)g(e)69 b(ar-)581 4832 y(gumen)-5 b(ts.)118
b(The)69 b(v)-9 b(alue)69 b(returned)h(b)-5 b(y)70 b(the)f(Sc)-5
b(heme)70 b(pro)5 b(cedure)69 b(is)h(returned)g(b)-5
b(y)70 b(the)f(C)581 5031 y(pro)5 b(cedure.)127 b(In)-5
b(v)g(oking)74 b(an)-5 b(y)73 b(Sc)-5 b(heme)74 b(pro)5
b(cedure)73 b(ma)-5 b(y)73 b(p)5 b(oten)-5 b(tially)73
b(cause)g(a)h(garbage)581 5230 y(collection.)830 5430
y(There)38 b(are)g(some)h(complications)g(that)e(o)5
b(ccur)38 b(when)g(mixing)h(calls)f(from)g(C)g(to)g(Sc)-5
b(heme)581 5629 y(with)58 b(con)-5 b(tin)g(uations)60
b(and)f(threads.)82 b(C)58 b(only)h(supp)5 b(orts)59
b(do)-5 b(wn)g(w)g(ard)60 b(con)-5 b(tin)g(uations)59
b(\(via)581 5828 y Fl(longjmp\(\))p Fp(\).)87 b(Sc)-5
b(heme)60 b(con)-5 b(tin)g(uations)61 b(that)e(capture)g(a)g(p)5
b(ortion)60 b(of)f(the)g(C)g(stac)-5 b(k)59 b(ha)-5 b(v)g(e)581
6027 y(to)82 b(follo)-5 b(w)82 b(the)f(same)i(restriction.)153
b(F)-14 b(or)83 b(example,)88 b(supp)5 b(ose)83 b(Sc)-5
b(heme)83 b(pro)5 b(cedure)81 b Fl(s0)581 6227 y Fp(captures)g(con)-5
b(tin)g(uation)83 b Fl(a)e Fp(and)g(then)g(calls)h(C)f(pro)5
b(cedure)81 b Fl(c0)p Fp(,)88 b(whic)-5 b(h)82 b(in)f(turn)g(calls)581
6426 y(Sc)-5 b(heme)54 b(pro)5 b(cedure)54 b Fl(s1)p
Fp(.)74 b(Pro)5 b(cedure)53 b Fl(s1)h Fp(can)f(safely)h(call)g(the)f
(con)-5 b(tin)g(uation)54 b Fl(a)p Fp(,)h(b)5 b(ecause)581
6625 y(that)64 b(is)h(a)f(do)-5 b(wn)g(w)g(ard)66 b(use.)102
b(When)64 b Fl(a)h Fp(is)g(called)f(Sc)-5 b(heme)65 b(48)f(will)h(remo)
-5 b(v)g(e)65 b(the)f(p)5 b(ortion)581 6824 y(of)74 b(the)f(C)h(stac)-5
b(k)73 b(used)i(b)-5 b(y)74 b(the)f(call)h(to)f Fl(c0)p
Fp(.)130 b(On)74 b(the)f(other)h(hand,)79 b(if)87 b Fl(s1)74
b Fp(captures)g(a)581 7024 y(con)-5 b(tin)g(uation,)71
b(that)66 b(con)-5 b(tin)g(uation)68 b(cannot)f(b)5 b(e)66
b(used)i(from)f Fl(s0)p Fp(,)j(b)5 b(ecause)67 b(b)-5
b(y)67 b(the)g(time)581 7223 y(con)-5 b(trol)46 b(returns)g(to)f
Fl(s0)g Fp(the)g(C)h(stac)-5 b(k)45 b(used)h(b)-5 b(y)48
b Fl(c0)e Fp(will)f(no)h(longer)g(b)5 b(e)45 b(v)-9 b(alid.)70
b(An)46 b(attempt)581 7422 y(to)63 b(in)-5 b(v)g(ok)g(e)65
b(an)e(up)-5 b(w)g(ard)66 b(con)-5 b(tin)g(uation)64
b(that)f(is)i(closed)f(o)-5 b(v)g(er)63 b(a)h(p)5 b(ortion)64
b(of)f(the)g(C)h(stac)-5 b(k)581 7621 y(will)56 b(raise)g(an)f
(exception.)830 7821 y(In)43 b(Sc)-5 b(heme)43 b(48)g(threads)g(are)f
(implemen)-5 b(ted)44 b(using)g(con)-5 b(tin)g(uations,)47
b(so)c(the)f(do)-5 b(wn)g(w)g(ard)581 8020 y(restriction)56
b(applies)h(to)f(them)g(as)h(w)-5 b(ell.)77 b(An)56 b(attempt)f(to)h
(return)g(from)g(Sc)-5 b(heme)57 b(to)f(C)g(at)581 8219
y(a)67 b(time)g(when)h(the)f(appropriate)g(C)g(frame)g(is)h(not)f(on)h
(top)f(of)g(the)g(C)g(stac)-5 b(k)67 b(will)g(cause)581
8418 y(the)60 b(curren)-5 b(t)61 b(thread)g(to)f(blo)5
b(c)-5 b(k)61 b(un)-5 b(til)61 b(the)f(frame)h(is)g(a)-5
b(v)c(ailable.)90 b(F)-14 b(or)61 b(example,)i(supp)5
b(ose)581 8618 y(thread)43 b Fl(t0)g Fp(calls)g(a)g(C)g(pro)5
b(cedure)42 b(whic)-5 b(h)44 b(calls)f(bac)-5 b(k)43
b(to)g(Sc)-5 b(heme,)46 b(at)c(whic)-5 b(h)43 b(p)5 b(oin)-5
b(t)43 b(con)-5 b(trol)581 8817 y(switc)g(hes)44 b(to)f(thread)f
Fl(t1)p Fp(,)k(whic)-5 b(h)44 b(also)g(calls)f(C)g(and)h(then)e(bac)-5
b(k)44 b(to)e(Sc)-5 b(heme.)71 b(A)-5 b(t)42 b(this)h(p)5
b(oin)-5 b(t)581 9016 y(b)5 b(oth)55 b Fl(t0)h Fp(and)g
Fl(t1)g Fp(ha)-5 b(v)g(e)56 b(activ)-5 b(e)55 b(calls)i(to)e(C)g(on)h
(the)f(C)h(stac)-5 b(k,)55 b(with)h Fl(t1)p Fp('s)h(C)e(frame)h(ab)5
b(o)-5 b(v)g(e)581 9215 y Fl(t0)p Fp('s.)123 b(If)71
b(thread)h Fl(t0)g Fp(attempts)f(to)g(return)g(from)h(Sc)-5
b(heme)72 b(to)f(C)g(it)g(will)h(blo)5 b(c)-5 b(k,)76
b(as)71 b(its)581 9415 y(frame)59 b(is)g(not)g(accessible.)85
b(Once)59 b Fl(t1)g Fp(has)g(returned)g(to)f(C)h(and)g(from)g(there)g
(to)f(Sc)-5 b(heme,)581 9614 y Fl(t0)67 b Fp(will)f(b)5
b(e)66 b(able)g(to)g(resume.)107 b(The)66 b(return)g(to)g(Sc)-5
b(heme)67 b(is)f(required)g(b)5 b(ecause)67 b(con)-5
b(text)581 9813 y(switc)g(hes)62 b(can)g(only)f(o)5 b(ccur)61
b(while)h(Sc)-5 b(heme)62 b(co)5 b(de)61 b(is)h(running.)94
b Fl(T0)61 b Fp(will)h(also)g(b)5 b(e)61 b(able)h(to)581
10012 y(resume)56 b(if)68 b Fl(t1)56 b Fp(uses)g(a)g(con)-5
b(tin)g(uation)56 b(to)f(thro)-5 b(w)56 b(past)f(its)h(call)f(to)g(C.)
3362 10511 y(99)p eop end
%%Page: 100 108
TeXDict begin 100 107 bop 1478 1046 a Fi(8.7)269 b(In)-7
b(teracting)89 b(with)h(the)f(Sc)-7 b(heme)89 b(heap)1478
1415 y Fp(Sc)-5 b(heme)71 b(48)g(uses)g(a)g(cop)-5 b(ying,)75
b(precise)c(garbage)g(collector.)119 b(An)-5 b(y)70 b(pro)5
b(cedure)71 b(that)f(al-)1478 1614 y(lo)5 b(cates)74
b(ob)9 b(jects)75 b(within)g(the)f(Sc)-5 b(heme)75 b(48)g(heap)g(ma)-5
b(y)75 b(trigger)g(a)g(garbage)g(collection.)1478 1814
y(V)-14 b(ariables)50 b(b)5 b(ound)51 b(to)e(v)-9 b(alues)50
b(in)g(the)f(Sc)-5 b(heme)51 b(48)f(heap)g(need)g(to)f(b)5
b(e)49 b(registered)h(with)g(the)1478 2013 y(garbage)69
b(collector)f(so)h(that)f(the)h(v)-9 b(alue)68 b(will)h(b)5
b(e)69 b(retained)g(and)g(so)g(that)g(the)f(v)-9 b(ariables)1478
2212 y(will)47 b(b)5 b(e)46 b(up)5 b(dated)46 b(if)h(the)f(garbage)h
(collector)f(mo)-5 b(v)g(es)47 b(the)f(ob)9 b(ject.)71
b(The)46 b(garbage)h(collector)1478 2411 y(has)h(no)g(facilit)-5
b(y)48 b(for)f(up)5 b(dating)49 b(p)5 b(oin)-5 b(ters)48
b(to)f(the)h(in)-5 b(teriors)48 b(of)g(ob)9 b(jects,)49
b(so)g(suc)-5 b(h)49 b(p)5 b(oin)-5 b(ters,)1478 2611
y(for)48 b(example)g(the)g(ones)g(returned)g(b)-5 b(y)51
b Fl(s48)p 4173 2611 53 7 v 63 w(extract)p 4845 2611
V 64 w(byte)p 5257 2611 V 64 w(vector)p Fp(,)f(will)f(lik)-5
b(ely)48 b(b)5 b(ecome)1478 2810 y(in)-5 b(v)c(alid)56
b(when)f(a)h(garbage)f(collection)g(o)5 b(ccurs.)1478
3290 y Fc(8.7.1)225 b(Registering)76 b(ob)12 b(jects)75
b(with)g(the)g(GC)1478 3602 y Fp(A)56 b(set)g(of)g(macros)i(are)e(used)
h(to)f(manage)h(the)g(registration)f(of)g(lo)5 b(cal)57
b(v)-9 b(ariables)56 b(with)h(the)1478 3801 y(garbage)e(collector.)1511
4108 y Fg(\017)83 b Fl(S48)p 1948 4108 V 63 w(DECLARE)p
2620 4108 V 64 w(GC)p 2858 4108 V 63 w(PROTECT\()p Fd(n)p
Fl(\))1511 4308 y Fg(\017)g Fl(void)h(S48)p 2380 4308
V 63 w(GC)p 2617 4308 V 63 w(PROTECT)p 3289 4308 V 64
w Fd(n)p Fl(\(s48)p 3801 4308 V 63 w(value)4289 4333
y Fj(1)4365 4308 y Fl(,)f Fd(:)28 b(:)g(:)o Fl(,)84 b(s48)p
5170 4308 V 63 w(value)5658 4333 y Fa(n)5749 4308 y Fl(\))1511
4507 y Fg(\017)f Fl(void)h(S48)p 2380 4507 V 63 w(GC)p
2617 4507 V 63 w(UNPROTECT\(\))1727 4814 y(S48)p 1998
4814 V 63 w(DECLARE)p 2670 4814 V 64 w(GC)p 2908 4814
V 63 w(PROTECT\()p Fd(n)p Fl(\))p Fp(,)64 b(where)d(1)55
b Fg(\024)h Fd(n)f Fg(\024)h Fp(9,)62 b(allo)5 b(cates)61
b(storage)g(for)f(regis-)1478 5014 y(tering)48 b Fd(n)f
Fp(v)-9 b(ariables.)72 b(A)-5 b(t)47 b(most)i(one)f(use)g(of)61
b Fl(S48)p 4523 5014 V 63 w(DECLARE)p 5195 5014 V 64
w(GC)p 5433 5014 V 63 w(PROTECT)49 b Fp(ma)-5 b(y)49
b(o)5 b(ccur)47 b(in)h(a)1478 5213 y(blo)5 b(c)-5 b(k.)71
b Fl(S48)p 2249 5213 V 64 w(GC)p 2487 5213 V 63 w(PROTECT)p
3159 5213 V 64 w Fd(n)p Fl(\()p Fd(v)3480 5238 y Fj(1)3555
5213 y Fl(,)87 b Fd(:)28 b(:)g(:)p Fl(,)87 b Fd(v)4177
5238 y Fa(n)4268 5213 y Fl(\))49 b Fp(registers)g(the)f
Fd(n)h Fp(v)-9 b(ariables)49 b(\(l-v)-9 b(alues\))48
b(with)1478 5412 y(the)40 b(garbage)i(collector.)68 b(It)41
b(m)-5 b(ust)42 b(b)5 b(e)41 b(within)g(scop)5 b(e)41
b(of)g(a)g Fl(S48)p 5359 5412 V 63 w(DECLARE)p 6031 5412
V 64 w(GC)p 6269 5412 V 63 w(PROTECT\()p Fd(n)p Fl(\))1478
5611 y Fp(and)56 b(b)5 b(e)56 b(b)5 b(efore)55 b(an)-5
b(y)56 b(co)5 b(de)55 b(whic)-5 b(h)57 b(can)f(cause)g(a)g(GC.)g
Fl(S48)p 5211 5611 V 63 w(GC)p 5448 5611 V 63 w(UNPROTECT)i
Fp(remo)-5 b(v)g(es)57 b(the)1478 5811 y(blo)5 b(c)-5
b(k's)64 b(protected)e(v)-9 b(ariables)64 b(from)f(the)g(garbage)h
(collector's)f(list.)98 b(It)63 b(m)-5 b(ust)64 b(b)5
b(e)63 b(called)1478 6010 y(at)j(the)g(end)i(of)e(the)g(blo)5
b(c)-5 b(k)67 b(after)f(an)-5 b(y)67 b(co)5 b(de)66 b(whic)-5
b(h)68 b(ma)-5 b(y)67 b(cause)g(a)g(garbage)g(collection.)1478
6209 y(Omitting)56 b(an)-5 b(y)56 b(of)f(the)g(three)g(ma)-5
b(y)56 b(cause)g(serious)h(and)f(hard-to-debug)h(problems.)76
b(No-)1478 6408 y(tably)-14 b(,)72 b(the)d(garbage)h(collector)e(ma)-5
b(y)70 b(relo)5 b(cate)68 b(an)h(ob)9 b(ject)69 b(and)h(in)-5
b(v)c(alidate)69 b Fl(s48)p 6717 6408 V 63 w(value)1478
6608 y Fp(v)-9 b(ariables)55 b(whic)-5 b(h)56 b(are)g(not)f(protected.)
1727 6810 y(A)i Fl(gc-protection-mismatch)62 b Fp(exception)57
b(is)h(raised)h(if,)f(when)g(a)g(C)g(pro)5 b(cedure)57
b(re-)1478 7009 y(turns)i(to)g(Sc)-5 b(heme,)61 b(the)d(calls)i(to)e
Fl(S48)p 3909 7009 V 64 w(GC)p 4147 7009 V 63 w(PROTECT\(\))i
Fp(ha)-5 b(v)g(e)60 b(not)f(b)5 b(een)58 b(matc)-5 b(hed)60
b(b)-5 b(y)59 b(an)1478 7208 y(equal)c(n)-5 b(um)g(b)5
b(er)57 b(of)e(calls)h(to)f Fl(S48)p 3554 7208 V 63 w(GC)p
3791 7208 V 63 w(UNPROTECT\(\))p Fp(.)1727 7410 y(Global)h(v)-9
b(ariables)56 b(ma)-5 b(y)55 b(also)h(b)5 b(e)55 b(registered)h(with)f
(the)g(garbage)g(collector.)1511 7718 y Fg(\017)83 b
Fl(void)h(*)f(S48)p 2550 7718 V 63 w(GC)p 2787 7718 V
63 w(PROTECT)p 3459 7718 V 64 w(GLOBAL\()p Fo(value)12
b Fl(\))1511 7917 y Fg(\017)83 b Fl(void)h(S48)p 2380
7917 V 63 w(GC)p 2617 7917 V 63 w(UNPROTECT)p 3463 7917
V 64 w(GLOBAL\(void)h(*)f(handle\))1478 8224 y(S48)p
1749 8224 V 63 w(GC)p 1986 8224 V 63 w(PROTECT)p 2658
8224 V 64 w(GLOBAL)55 b Fp(p)5 b(ermanen)-5 b(tly)54
b(registers)g(the)g(v)-9 b(ariable)53 b Fo(value)68 b
Fp(\(an)54 b(l-v)-9 b(alue)54 b(of)1478 8424 y(t)-5 b(yp)5
b(e)52 b Fl(s48)p 2120 8424 V 64 w(value)p Fp(\))i(with)f(the)g
(garbage)g(collector.)73 b(It)53 b(returns)h(a)f(handle)h(p)5
b(oin)-5 b(ter)54 b(for)f(use)1478 8623 y(as)74 b(an)f(argumen)-5
b(t)74 b(to)f Fl(S48)p 3201 8623 V 63 w(GC)p 3438 8623
V 64 w(UNPROTECT)p 4285 8623 V 64 w(GLOBAL)p Fp(,)h(whic)-5
b(h)74 b(unregisters)h(the)e(v)-9 b(ariable)1478 8822
y(again.)1478 9302 y Fc(8.7.2)225 b(Keeping)75 b(C)g(data)f(structures)
g(in)g(the)h(Sc)-6 b(heme)74 b(heap)1478 9614 y Fp(C)64
b(data)g(structures)h(can)f(b)5 b(e)64 b(k)-5 b(ept)64
b(in)h(the)f(Sc)-5 b(heme)64 b(heap)h(b)-5 b(y)65 b(em)-5
b(b)5 b(edding)65 b(them)f(inside)1478 9813 y(b)-5 b(yte)53
b(v)-5 b(ectors.)73 b(The)54 b(follo)-5 b(wing)54 b(macros)g(can)g(b)5
b(e)53 b(used)i(to)e(create)f(and)j(access)f(em)-5 b(b)5
b(edded)1478 10012 y(C)55 b(ob)9 b(jects.)4218 10511
y(100)p eop end
%%Page: 101 109
TeXDict begin 101 108 bop 614 1046 a Fg(\017)83 b Fl(s48)p
1051 1046 53 7 v 64 w(value)h(S48)p 1895 1046 V 63 w(MAKE)p
2306 1046 V 63 w(VALUE\(type\))2255 b Fp(\(ma)-5 b(y)55
b(GC\))614 1245 y Fg(\017)83 b Fl(type)499 b(S48)p 1898
1245 V 64 w(EXTRACT)p 2571 1245 V 63 w(VALUE\(s48)p 3417
1245 V 65 w(value,)84 b(type\))614 1445 y Fg(\017)f Fl(type)h(*)332
b(S48)p 1902 1445 V 64 w(EXTRACT)p 2575 1445 V 64 w(VALUE)p
3074 1445 V 63 w(POINTER\(s48)p 4094 1445 V 65 w(value,)84
b(type\))614 1644 y Fg(\017)f Fl(void)499 b(S48)p 1898
1644 V 64 w(SET)p 2223 1644 V 63 w(VALUE\(s48)p 3069
1644 V 64 w(value,)84 b(type,)g(value\))625 1944 y(S48)p
896 1944 V 63 w(MAKE)p 1307 1944 V 64 w(VALUE)44 b Fp(mak)-5
b(es)45 b(a)f(b)-5 b(yte)43 b(v)-5 b(ector)43 b(large)h(enough)g(to)g
(hold)g(an)g(ob)9 b(ject)43 b(whose)h(t)-5 b(yp)5 b(e)581
2143 y(is)60 b Fo(typ)-8 b(e)12 b Fp(.)84 b Fl(S48)p
1454 2143 V 63 w(EXTRACT)p 2126 2143 V 64 w(VALUE)60
b Fp(returns)f(the)g(con)-5 b(ten)g(ts)59 b(of)g(a)g(b)-5
b(yte)58 b(v)-5 b(ector)58 b(cast)h(to)g Fo(typ)-8 b(e)12
b Fp(,)581 2342 y(and)59 b Fl(S48)p 1178 2342 V 63 w(EXTRACT)p
1850 2342 V 64 w(VALUE)p 2349 2342 V 64 w(POINTER)g Fp(returns)f(a)g(p)
5 b(oin)-5 b(ter)58 b(to)g(the)f(con)-5 b(ten)g(ts)59
b(of)e(the)h(b)-5 b(yte)581 2541 y(v)g(ector.)89 b(The)60
b(v)-9 b(alue)61 b(returned)f(b)-5 b(y)63 b Fl(S48)p
3129 2541 V 63 w(EXTRACT)p 3801 2541 V 64 w(VALUE)p 4300
2541 V 64 w(POINTER)f Fp(is)f(v)-9 b(alid)60 b(only)h(un)-5
b(til)581 2741 y(the)55 b(next)g(garbage)g(collection.)830
2940 y Fl(S48)p 1101 2940 V 64 w(SET)p 1426 2940 V 63
w(VALUE)h Fp(stores)g Fl(value)g Fp(in)-5 b(to)56 b(the)f(b)-5
b(yte)55 b(v)-5 b(ector.)581 3407 y Fc(8.7.3)225 b(C)75
b(co)6 b(de)74 b(and)g(heap)g(images)581 3714 y Fp(Sc)-5
b(heme)65 b(48)f(uses)h(dump)5 b(ed)64 b(heap)h(images)f(to)g(restore)g
(a)g(previous)g(system)h(state.)99 b(The)581 3913 y(Sc)-5
b(heme)59 b(48)f(heap)h(is)g(written)e(in)-5 b(to)59
b(a)f(\014le)h(in)f(a)h(mac)-5 b(hine-indep)5 b(enden)-5
b(t)60 b(and)f(op)5 b(erating-)581 4112 y(system-indep)g(enden)-5
b(t)69 b(format.)111 b(The)68 b(pro)5 b(cedures)68 b(describ)5
b(ed)68 b(ab)5 b(o)-5 b(v)g(e)68 b(ma)-5 b(y)68 b(b)5
b(e)68 b(used)g(to)581 4311 y(create)55 b(ob)9 b(jects)55
b(in)h(the)f(Sc)-5 b(heme)56 b(heap)g(that)f(con)-5 b(tain)56
b(information)g(sp)5 b(eci\014c)55 b(to)g(the)g(cur-)581
4511 y(ren)-5 b(t)81 b(mac)-5 b(hine,)88 b(op)5 b(erating)80
b(system,)88 b(or)81 b(pro)5 b(cess.)150 b(A)80 b(heap)h(image)g(con)-5
b(taining)81 b(suc)-5 b(h)581 4710 y(ob)9 b(jects)55
b(ma)-5 b(y)56 b(not)f(w)-5 b(ork)56 b(correctly)e(when)h(resumed.)830
4909 y(T)-14 b(o)53 b(address)g(this)g(problem,)h(a)f(record)f(t)-5
b(yp)5 b(e)52 b(ma)-5 b(y)52 b(b)5 b(e)52 b(giv)-5 b(en)53
b(a)f(`resumer')i(pro)5 b(cedure.)581 5109 y(On)59 b(startup,)h(the)e
(resumer)h(pro)5 b(cedure)58 b(for)g(a)h(t)-5 b(yp)5
b(e)58 b(is)h(applied)g(to)f(eac)-5 b(h)59 b(record)f(of)g(that)581
5308 y(t)-5 b(yp)5 b(e)61 b(in)h(the)g(image)g(b)5 b(eing)62
b(restarted.)93 b(This)62 b(pro)5 b(cedure)62 b(can)g(up)5
b(date)61 b(the)h(record)f(in)i(a)581 5507 y(manner)41
b(appropriate)f(to)f(the)g(mac)-5 b(hine,)44 b(op)5 b(erating)40
b(system,)j(or)d(pro)5 b(cess)40 b(used)h(to)e(resume)581
5706 y(the)55 b(image.)614 6006 y Fg(\017)83 b Fl
(\(define-record-resumer)k Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)82
b(pr)-8 b(o)g(c)g(e)g(dur)g(e)12 b Fl(\))581 6306 y
(Define-record-resumer)53 b Fp(de\014nes)c Fo(pr)-8 b(o)g(c)g(e)g(dur)g
(e)12 b Fp(,)50 b(whic)-5 b(h)49 b(should)i(accept)d(one)h(argumen)-5
b(t,)581 6505 y(to)61 b(b)5 b(e)62 b(the)f(resumer)i(for)e
Fo(r)-8 b(e)g(c)g(or)g(d-typ)g(e)11 b Fp(.)93 b(The)62
b(order)g(in)g(whic)-5 b(h)62 b(resumer)h(pro)5 b(cedures)62
b(are)581 6704 y(called)56 b(is)g(not)f(sp)5 b(eci\014ed.)830
6904 y(The)66 b Fo(pr)-8 b(o)g(c)g(e)g(dur)g(e)76 b Fp(argumen)-5
b(t)66 b(to)f Fl(define-record-resumer)k Fp(ma)-5 b(y)66
b(b)5 b(e)65 b Fl(#f)p Fp(,)j(in)e(whic)-5 b(h)581 7103
y(case)46 b(records)g(of)f(the)h(giv)-5 b(en)45 b(t)-5
b(yp)5 b(e)45 b(are)h(not)f(written)g(out)h(in)g(heap)g(images.)71
b(When)46 b(writing)581 7303 y(a)75 b(heap)g(image)g(an)-5
b(y)75 b(reference)f(to)g(suc)-5 b(h)76 b(a)f(record)g(is)g(replaced)g
(b)-5 b(y)75 b(the)f(v)-9 b(alue)75 b(of)f(the)581 7502
y(record's)56 b(\014rst)g(\014eld,)g(and)f(an)h(exception)f(is)h
(raised)g(after)e(the)h(image)h(is)g(written.)581 8052
y Fi(8.8)270 b(Using)90 b(Sc)-7 b(heme)89 b(records)h(in)g(C)g(co)7
b(de)581 8417 y Fp(External)55 b(mo)5 b(dules)56 b(can)g(create)e
(records)i(and)g(access)f(their)g(slots)i(p)5 b(ositionally)-14
b(.)614 8716 y Fg(\017)83 b Fl(s48)p 1051 8716 V 64 w(value)h(s48)p
1895 8716 V 63 w(make)p 2306 8716 V 63 w(record\(s48)p
3239 8716 V 65 w(value\))1755 b Fp(\(ma)-5 b(y)55 b(GC\))614
8916 y Fg(\017)83 b Fl(int)582 b(S48)p 1894 8916 V 63
w(RECORD)p 2479 8916 V 64 w(P\(s48)p 2978 8916 V 64 w(value\))614
9115 y Fg(\017)83 b Fl(s48)p 1051 9115 V 64 w(value)h(S48)p
1895 9115 V 63 w(RECORD)p 2480 9115 V 64 w(TYPE\(s48)p
3240 9115 V 64 w(value\))614 9314 y Fg(\017)f Fl(s48)p
1051 9314 V 64 w(value)h(S48)p 1895 9314 V 63 w(RECORD)p
2480 9314 V 64 w(REF\(s48)p 3153 9314 V 64 w(value,)g(long\))614
9513 y Fg(\017)f Fl(void)499 b(S48)p 1898 9513 V 64 w(RECORD)p
2484 9513 V 63 w(SET\(s48)p 3156 9513 V 64 w(value,)84
b(long,)g(s48)p 4606 9513 V 63 w(value\))581 9813 y Fp(The)63
b(argumen)-5 b(t)63 b(to)f Fl(s48)p 2161 9813 V 63 w(make)p
2572 9813 V 64 w(record)h Fp(should)h(b)5 b(e)62 b(a)h(shared)g
(binding)h(whose)f(v)-9 b(alue)62 b(is)581 10012 y(a)c(record)f(t)-5
b(yp)5 b(e.)79 b(In)58 b(C)g(the)f(\014elds)h(of)f(Sc)-5
b(heme)58 b(records)g(are)f(only)h(accessible)g(via)f(o\013sets,)3321
10511 y(101)p eop end
%%Page: 102 110
TeXDict begin 102 109 bop 1478 1046 a Fp(with)54 b(the)f(\014rst)h
(\014eld)h(ha)-5 b(ving)54 b(o\013set)g(zero,)g(the)g(second)g
(o\013set)g(one,)g(and)h(so)f(forth.)73 b(If)54 b(the)1478
1245 y(order)i(of)g(the)f(\014elds)i(is)g(c)-5 b(hanged)57
b(in)f(the)g(Sc)-5 b(heme)56 b(de\014nition)h(of)f(the)g(record)f(t)-5
b(yp)5 b(e)56 b(the)f(C)1478 1445 y(co)5 b(de)55 b(m)-5
b(ust)56 b(b)5 b(e)55 b(up)5 b(dated)55 b(as)h(w)-5 b(ell.)1727
1671 y(F)-14 b(or)56 b(example,)f(giv)-5 b(en)56 b(the)f(follo)-5
b(wing)56 b(record-t)-5 b(yp)5 b(e)55 b(de\014nition)1478
2112 y Fl(\(define-record-type)90 b(thing)e(:thing)1652
2311 y(\(make-thing)h(a)f(b\))1652 2510 y(thing?)1652
2710 y(\(a)g(thing-a\))1652 2909 y(\(b)g(thing-b\)\))1478
3322 y Fp(the)55 b(iden)-5 b(ti\014er)56 b Fl(:thing)g
Fp(is)g(b)5 b(ound)56 b(to)f(the)g(record)g(t)-5 b(yp)5
b(e)55 b(and)h(can)f(b)5 b(e)55 b(exp)5 b(orted)54 b(to)h(C:)1478
3763 y Fl(\(define-exported-binding)91 b("thing-record-type")g
(:thing\))1478 4177 y(Thing)56 b Fp(records)g(can)f(then)g(b)5
b(e)55 b(made)h(in)g(C:)1478 4618 y Fl(static)88 b(s48_value)1652
4817 y(thing_record_type_binding)k(=)87 b(S48_FALSE;)1478
5215 y(void)h(initialize_things\(void\))1478 5415 y Fg(f)1652
5614 y Fl(S48_GC_PROTECT_GLOBAL\(thing_record_type_binding\);)1652
5813 y(thing_record_type_binding)k(=)1914 6012 y
(s48_get_imported_binding\("thing-record-type"\);)1478
6212 y Fg(g)1478 6610 y Fl(s48_value)d(make_thing\(s48_value)h(a,)e
(s48_value)g(b\))1478 6809 y Fg(f)1652 7009 y Fl(s48_value)h(thing;)
1652 7208 y(s48_DECLARE_GC_PROTECT\(2\);)1652 7606 y
(S48_GC_PROTECT_2\(a,)i(b\);)1652 8005 y(thing)d(=)g
(s48_make_record\(thing_record_type_binding\);)1652 8204
y(S48_RECORD_SET\(thing,)j(0,)c(a\);)1652 8403 y
(S48_RECORD_SET\(thing,)k(1,)c(b\);)1652 8802 y(S48_GC_UNPROTECT\(\);)
1652 9200 y(return)h(thing;)1478 9400 y Fg(g)1478 9813
y Fp(Note)60 b(that)h(the)h(v)-9 b(ariables)61 b Fl(a)h
Fp(and)g Fl(b)g Fp(m)-5 b(ust)63 b(b)5 b(e)61 b(protected)g(against)h
(the)f(p)5 b(ossibilit)-5 b(y)63 b(of)e(a)1478 10012
y(garbage)55 b(collection)g(o)5 b(ccuring)56 b(during)g(the)f(call)g
(to)g Fl(s48)p 5094 10012 53 7 v 63 w(make)p 5505 10012
V 64 w(record\(\))p Fp(.)4218 10511 y(102)p eop end
%%Page: 103 111
TeXDict begin 103 110 bop 581 1046 a Fi(8.9)270 b(Raising)89
b(exceptions)h(from)g(external)f(co)7 b(de)581 1410 y
Fp(The)68 b(follo)-5 b(wing)69 b(macros)g(explicitly)e(raise)i(certain)
f(errors,)j(immediately)e(returning)f(to)581 1609 y(Sc)-5
b(heme)77 b(48.)135 b(Raising)77 b(an)f(exception)f(p)5
b(erforms)76 b(all)g(necessary)g(clean-up)h(actions)f(to)581
1808 y(prop)5 b(erly)62 b(return)g(to)g(Sc)-5 b(heme)63
b(48,)i(including)e(adjusting)g(the)f(stac)-5 b(k)62
b(of)g(protected)g(v)-9 b(ari-)581 2008 y(ables.)614
2272 y Fg(\017)83 b Fl(s48)p 1051 2272 53 7 v 64 w(raise)p
1550 2272 V 63 w(scheme)p 2135 2272 V 64 w(exception\(int)i(type,)f
(int)g(nargs,)g(...\))581 2536 y(s48)p 852 2536 V 63
w(raise)p 1350 2536 V 64 w(scheme)p 1936 2536 V 64 w(exception)40
b Fp(is)e(the)g(base)h(pro)5 b(cedure)38 b(for)g(raising)h(exceptions.)
68 b Fl(type)581 2735 y Fp(is)56 b(the)e(t)-5 b(yp)5
b(e)55 b(of)f(exception,)h(and)g(should)i(b)5 b(e)54
b(one)h(of)g(the)g Fl(S48)p 4508 2735 V 63 w(EXCEPTION)p
5354 2735 V 64 w Fp(.)28 b(.)g(.)g(constan)-5 b(ts)581
2935 y(de\014ned)74 b(in)g Fl(scheme48arch.h)p Fp(.)130
b Fl(nargs)74 b Fp(is)f(the)g(n)-5 b(um)g(b)5 b(er)75
b(of)e(additional)h(v)-9 b(alues)73 b(to)g(b)5 b(e)581
3134 y(included)53 b(in)g(the)f(exception;)g(these)g(follo)-5
b(w)53 b(the)f Fl(nargs)h Fp(argumen)-5 b(t)52 b(and)h(should)h(all)e
(ha)-5 b(v)g(e)581 3333 y(t)g(yp)5 b(e)55 b Fl(s48)p
1226 3333 V 63 w(value)p Fp(.)75 b Fl(s48)p 2106 3333
V 63 w(raise)p 2604 3333 V 64 w(scheme)p 3190 3333 V
64 w(exception)56 b Fp(nev)-5 b(er)56 b(returns.)830
3532 y(The)f(follo)-5 b(wing)56 b(pro)5 b(cedures)56
b(are)f(a)-5 b(v)c(ailable)55 b(for)g(raising)i(particular)e(t)-5
b(yp)5 b(es)55 b(of)g(excep-)581 3732 y(tions.)75 b(Lik)-5
b(e)55 b Fl(s48)p 1686 3732 V 63 w(raise)p 2184 3732
V 64 w(scheme)p 2770 3732 V 63 w(exception)i Fp(these)e(nev)-5
b(er)56 b(return.)614 3996 y Fg(\017)83 b Fl(s48)p 1051
3996 V 64 w(raise)p 1550 3996 V 63 w(argument)p 2309
3996 V 64 w(type)p 2721 3996 V 64 w(error\(s48)p 3568
3996 V 64 w(value\))614 4195 y Fg(\017)g Fl(s48)p 1051
4195 V 64 w(raise)p 1550 4195 V 63 w(argument)p 2309
4195 V 64 w(number)p 2895 4195 V 64 w(error\(int)i(nargs,)f(int)f(min,)
h(int)g(max\))614 4394 y Fg(\017)f Fl(s48)p 1051 4394
V 64 w(raise)p 1550 4394 V 63 w(range)p 2048 4394 V 64
w(error\(long)i(value,)f(long)f(min,)h(long)g(max\))614
4594 y Fg(\017)f Fl(s48)p 1051 4594 V 64 w(raise)p 1550
4594 V 63 w(closed)p 2135 4594 V 64 w(channel)p 2808
4594 V 64 w(error\(\))614 4793 y Fg(\017)g Fl(s48)p 1051
4793 V 64 w(raise)p 1550 4793 V 63 w(os)p 1787 4793 V
63 w(error\(int)i(errno\))614 4992 y Fg(\017)e Fl(s48)p
1051 4992 V 64 w(raise)p 1550 4992 V 63 w(out)p 1874
4992 V 64 w(of)p 2112 4992 V 63 w(memory)p 2697 4992
V 64 w(error\(\))581 5256 y Fp(An)50 b(argumen)-5 b(t)52
b(t)-5 b(yp)5 b(e)50 b(error)g(indicates)h(that)f(the)g(giv)-5
b(en)51 b(v)-9 b(alue)50 b(is)h(of)f(the)h(wrong)f(t)-5
b(yp)5 b(e.)72 b(An)581 5456 y(argumen)-5 b(t)51 b(n)-5
b(um)g(b)5 b(er)52 b(error)f(is)g(raised)g(when)g(the)f(n)-5
b(um)g(b)5 b(er)52 b(of)e(argumen)-5 b(ts,)53 b Fl(nargs)p
Fp(,)f(should)581 5655 y(b)5 b(e,)54 b(but)f(isn't,)i(b)5
b(et)-5 b(w)g(een)53 b Fl(min)h Fp(and)g Fl(max)p Fp(,)g(inclusiv)-5
b(e.)74 b(Similarly)-14 b(,)55 b(a)e(range)h(error)f(indicates)581
5854 y(that)i Fl(value)h Fp(is)g(not)f(b)5 b(et)-5 b(w)g(een)55
b(b)5 b(et)-5 b(w)g(een)56 b Fl(min)f Fp(and)h Fl(max)p
Fp(,)g(inclusiv)-5 b(e.)830 6053 y(The)54 b(follo)-5
b(wing)55 b(macros)g(raise)g(argumen)-5 b(t)55 b(t)-5
b(yp)5 b(e)54 b(errors)g(if)g(their)g(argumen)-5 b(t)55
b(do)5 b(es)55 b(not)581 6253 y(ha)-5 b(v)g(e)68 b(the)e(required)h(t)
-5 b(yp)5 b(e.)108 b Fl(S48)p 2680 6253 V 63 w(CHECK)p
3178 6253 V 64 w(BOOLEAN)68 b Fp(raises)g(an)f(error)g(if)g(its)g
(argumen)-5 b(t)68 b(is)581 6452 y(neither)55 b Fl(#t)h
Fp(or)f Fl(#f)p Fp(.)614 6716 y Fg(\017)83 b Fl(void)h(S48)p
1483 6716 V 63 w(CHECK)p 1981 6716 V 64 w(BOOLEAN\(s48)p
3002 6716 V 65 w(value\))614 6915 y Fg(\017)f Fl(void)h(S48)p
1483 6915 V 63 w(CHECK)p 1981 6915 V 64 w(SYMBOL\(s48)p
2915 6915 V 65 w(value\))614 7115 y Fg(\017)f Fl(void)h(S48)p
1483 7115 V 63 w(CHECK)p 1981 7115 V 64 w(PAIR\(s48)p
2741 7115 V 64 w(value\))614 7314 y Fg(\017)f Fl(void)h(S48)p
1483 7314 V 63 w(CHECK)p 1981 7314 V 64 w(STRING\(s48)p
2915 7314 V 65 w(value\))614 7513 y Fg(\017)f Fl(void)h(S48)p
1483 7513 V 63 w(CHECK)p 1981 7513 V 64 w(INTEGER\(s48)p
3002 7513 V 65 w(value\))614 7712 y Fg(\017)f Fl(void)h(S48)p
1483 7712 V 63 w(CHECK)p 1981 7712 V 64 w(CHANNEL\(s48)p
3002 7712 V 65 w(value\))614 7912 y Fg(\017)f Fl(void)h(S48)p
1483 7912 V 63 w(CHECK)p 1981 7912 V 64 w(BYTE)p 2393
7912 V 63 w(VECTOR\(s48)p 3326 7912 V 65 w(value\))614
8111 y Fg(\017)f Fl(void)h(S48)p 1483 8111 V 63 w(CHECK)p
1981 8111 V 64 w(RECORD\(s48)p 2915 8111 V 65 w(value\))614
8310 y Fg(\017)f Fl(void)h(S48)p 1483 8310 V 63 w(CHECK)p
1981 8310 V 64 w(SHARED)p 2567 8310 V 64 w(BINDING\(s48)p
3588 8310 V 64 w(value\))581 8852 y Fi(8.10)270 b(Unsafe)90
b(functions)h(and)f(macros)581 9215 y Fp(All)49 b(of)f(the)g(C)h(pro)5
b(cedures)49 b(and)g(macros)g(describ)5 b(ed)49 b(ab)5
b(o)-5 b(v)g(e)49 b(c)-5 b(hec)g(k)49 b(that)f(their)g(argumen)-5
b(ts)581 9415 y(ha)g(v)g(e)54 b(the)f(appropriate)h(t)-5
b(yp)5 b(es)53 b(and)h(that)e(indexes)i(are)f(in)h(range.)73
b(The)54 b(follo)-5 b(wing)54 b(pro)5 b(ce-)581 9614
y(dures)44 b(and)f(macros)g(are)g(iden)-5 b(tical)43
b(to)f(those)h(describ)5 b(ed)43 b(ab)5 b(o)-5 b(v)g(e,)45
b(except)d(that)g(they)g(do)h(not)581 9813 y(p)5 b(erform)64
b(t)-5 b(yp)5 b(e)62 b(and)i(range)g(c)-5 b(hec)g(ks.)99
b(They)63 b(are)g(pro)-5 b(vided)65 b(for)e(the)g(purp)5
b(ose)64 b(of)g(writing)581 10012 y(more)56 b(e\016cien)-5
b(t)55 b(co)5 b(de;)55 b(their)g(general)h(use)g(is)f(not)h
(recommended.)3321 10511 y(103)p eop end
%%Page: 104 112
TeXDict begin 104 111 bop 1511 1046 a Fg(\017)83 b Fl(long)499
b(S48)p 2795 1046 53 7 v 63 w(UNSAFE)p 3380 1046 V 64
w(EXTRACT)p 4053 1046 V 64 w(CHAR\(s48)p 4813 1046 V
64 w(value\))1511 1245 y Fg(\017)83 b Fl(s48)p 1948 1245
V 63 w(value)h(S48)p 2791 1245 V 63 w(UNSAFE)p 3376 1245
V 64 w(ENTER)p 3875 1245 V 64 w(CHAR\(long\))1511 1445
y Fg(\017)f Fl(long)499 b(S48)p 2795 1445 V 63 w(UNSAFE)p
3380 1445 V 64 w(EXTRACT)p 4053 1445 V 64 w(INTEGER\(s48)p
5074 1445 V 65 w(value\))1511 1644 y Fg(\017)83 b Fl(long)499
b(S48)p 2795 1644 V 63 w(UNSAFE)p 3380 1644 V 64 w(EXTRACT)p
4053 1644 V 64 w(DOUBLE\(s48)p 4987 1644 V 64 w(value\))1511
1943 y Fg(\017)83 b Fl(long)499 b(S48)p 2795 1943 V 63
w(UNSAFE)p 3380 1943 V 64 w(EXTRACT)p 4053 1943 V 64
w(FIXNUM\(s48)p 4987 1943 V 64 w(value\))1511 2142 y
Fg(\017)83 b Fl(s48)p 1948 2142 V 63 w(value)h(S48)p
2791 2142 V 63 w(UNSAFE)p 3376 2142 V 64 w(ENTER)p 3875
2142 V 64 w(FIXNUM\(long\))1511 2441 y Fg(\017)f Fl(s48)p
1948 2441 V 63 w(value)h(S48)p 2791 2441 V 63 w(UNSAFE)p
3376 2441 V 64 w(CAR\(s48)p 4049 2441 V 64 w(value\))1511
2640 y Fg(\017)f Fl(s48)p 1948 2640 V 63 w(value)h(S48)p
2791 2640 V 63 w(UNSAFE)p 3376 2640 V 64 w(CDR\(s48)p
4049 2640 V 64 w(value\))1511 2839 y Fg(\017)f Fl(void)499
b(S48)p 2795 2839 V 63 w(UNSAFE)p 3380 2839 V 64 w(SET)p
3705 2839 V 63 w(CAR\(s48)p 4377 2839 V 64 w(value,)84
b(s48)p 5308 2839 V 64 w(value\))1511 3039 y Fg(\017)f
Fl(void)499 b(S48)p 2795 3039 V 63 w(UNSAFE)p 3380 3039
V 64 w(SET)p 3705 3039 V 63 w(CDR\(s48)p 4377 3039 V
64 w(value,)84 b(s48)p 5308 3039 V 64 w(value\))1511
3337 y Fg(\017)f Fl(long)499 b(S48)p 2795 3337 V 63 w(UNSAFE)p
3380 3337 V 64 w(VECTOR)p 3966 3337 V 64 w(LENGTH\(s48)p
4900 3337 V 64 w(value\))1511 3537 y Fg(\017)83 b Fl(s48)p
1948 3537 V 63 w(value)h(S48)p 2791 3537 V 63 w(UNSAFE)p
3376 3537 V 64 w(VECTOR)p 3962 3537 V 64 w(REF\(s48)p
4635 3537 V 64 w(value,)g(long\))1511 3736 y Fg(\017)f
Fl(void)499 b(S48)p 2795 3736 V 63 w(UNSAFE)p 3380 3736
V 64 w(VECTOR)p 3966 3736 V 64 w(SET\(s48)p 4639 3736
V 64 w(value,)84 b(long,)g(s48)p 6089 3736 V 63 w(value\))1511
4035 y Fg(\017)f Fl(long)499 b(S48)p 2795 4035 V 63 w(UNSAFE)p
3380 4035 V 64 w(STRING)p 3966 4035 V 64 w(LENGTH\(s48)p
4900 4035 V 64 w(value\))1511 4234 y Fg(\017)83 b Fl(char)499
b(S48)p 2795 4234 V 63 w(UNSAFE)p 3380 4234 V 64 w(STRING)p
3966 4234 V 64 w(REF\(s48)p 4639 4234 V 64 w(value,)84
b(long\))1511 4433 y Fg(\017)f Fl(void)499 b(S48)p 2795
4433 V 63 w(UNSAFE)p 3380 4433 V 64 w(STRING)p 3966 4433
V 64 w(SET\(s48)p 4639 4433 V 64 w(value,)84 b(long,)g(char\))1511
4732 y Fg(\017)f Fl(s48)p 1948 4732 V 63 w(value)h(S48)p
2791 4732 V 63 w(UNSAFE)p 3376 4732 V 64 w(SYMBOL)p 3962
4732 V 64 w(TO)p 4200 4732 V 63 w(STRING\(s48)p 5133
4732 V 65 w(value\))1511 5031 y Fg(\017)f Fl(long)499
b(S48)p 2795 5031 V 63 w(UNSAFE)p 3380 5031 V 64 w(BYTE)p
3792 5031 V 63 w(VECTOR)p 4377 5031 V 64 w(LENGTH\(s48)p
5311 5031 V 65 w(value\))1511 5230 y Fg(\017)83 b Fl(char)499
b(S48)p 2795 5230 V 63 w(UNSAFE)p 3380 5230 V 64 w(BYTE)p
3792 5230 V 63 w(VECTOR)p 4377 5230 V 64 w(REF\(s48)p
5050 5230 V 64 w(value,)84 b(long\))1511 5430 y Fg(\017)f
Fl(void)499 b(S48)p 2795 5430 V 63 w(UNSAFE)p 3380 5430
V 64 w(BYTE)p 3792 5430 V 63 w(VECTOR)p 4377 5430 V 64
w(SET\(s48)p 5050 5430 V 64 w(value,)84 b(long,)g(int\))1511
5729 y Fg(\017)f Fl(s48)p 1948 5729 V 63 w(value)h(S48)p
2791 5729 V 63 w(UNSAFE)p 3376 5729 V 64 w(SHARED)p 3962
5729 V 64 w(BINDING)p 4635 5729 V 64 w(REF\(s48)p 5308
5729 V 64 w(value)g(s)p 5978 5729 V 63 w(b\))1511 5928
y Fg(\017)f Fl(int)582 b(S48)p 2791 5928 V 63 w(UNSAFE)p
3376 5928 V 64 w(SHARED)p 3962 5928 V 64 w(BINDING)p
4635 5928 V 64 w(P\(x\))1511 6127 y Fg(\017)83 b Fl(int)582
b(S48)p 2791 6127 V 63 w(UNSAFE)p 3376 6127 V 64 w(SHARED)p
3962 6127 V 64 w(BINDING)p 4635 6127 V 64 w(IS)p 4873
6127 V 63 w(IMPORT)p 5458 6127 V 63 w(P\(s48)p 5956 6127
V 64 w(value)84 b(s)p 6626 6127 V 63 w(b\))1511 6326
y Fg(\017)f Fl(s48)p 1948 6326 V 63 w(value)h(S48)p 2791
6326 V 63 w(UNSAFE)p 3376 6326 V 64 w(SHARED)p 3962 6326
V 64 w(BINDING)p 4635 6326 V 64 w(NAME\(s48)p 5395 6326
V 64 w(value)g(s)p 6065 6326 V 63 w(b\))1511 6526 y Fg(\017)f
Fl(void)499 b(S48)p 2795 6526 V 63 w(UNSAFE)p 3380 6526
V 64 w(SHARED)p 3966 6526 V 64 w(BINDING)p 4639 6526
V 64 w(SET\(s48)p 5312 6526 V 64 w(value)84 b(s)p 5982
6526 V 63 w(b,)f(s48)p 6563 6526 V 63 w(value)h(value\))1511
6824 y Fg(\017)f Fl(s48)p 1948 6824 V 63 w(value)h(S48)p
2791 6824 V 63 w(UNSAFE)p 3376 6824 V 64 w(RECORD)p 3962
6824 V 64 w(TYPE\(s48)p 4722 6824 V 64 w(value\))1511
7024 y Fg(\017)f Fl(s48)p 1948 7024 V 63 w(value)h(S48)p
2791 7024 V 63 w(UNSAFE)p 3376 7024 V 64 w(RECORD)p 3962
7024 V 64 w(REF\(s48)p 4635 7024 V 64 w(value,)g(long\))1511
7223 y Fg(\017)f Fl(void)499 b(S48)p 2795 7223 V 63 w(UNSAFE)p
3380 7223 V 64 w(RECORD)p 3966 7223 V 64 w(SET\(s48)p
4639 7223 V 64 w(value,)84 b(long,)g(s48)p 6089 7223
V 63 w(value\))1511 7522 y Fg(\017)f Fl(type)499 b(S48)p
2795 7522 V 63 w(UNSAFE)p 3380 7522 V 64 w(EXTRACT)p
4053 7522 V 64 w(VALUE\(s48)p 4900 7522 V 64 w(value,)84
b(type\))1511 7721 y Fg(\017)f Fl(type)h(*)332 b(S48)p
2799 7721 V 63 w(UNSAFE)p 3384 7721 V 64 w(EXTRACT)p
4057 7721 V 64 w(VALUE)p 4556 7721 V 64 w(POINTER\(s48)p
5577 7721 V 64 w(value,)84 b(type\))1511 7920 y Fg(\017)f
Fl(void)499 b(S48)p 2795 7920 V 63 w(UNSAFE)p 3380 7920
V 64 w(SET)p 3705 7920 V 63 w(VALUE\(s48)p 4551 7920
V 65 w(value,)84 b(type,)f(value\))4218 10511 y Fp(104)p
eop end
%%Page: 105 113
TeXDict begin 105 112 bop 581 2311 a Fk(Chapter)130 b(9)581
3160 y Fn(Access)155 b(to)g(POSIX)581 4043 y Fp(This)56
b(c)-5 b(hapter)56 b(describ)5 b(es)56 b(Sc)-5 b(heme)56
b(48's)g(in)-5 b(terface)55 b(to)g(the)g(POSIX)g(C)h(calls)g([1].)74
b(Sc)-5 b(heme)581 4242 y(v)g(ersions)47 b(of)e(most)h(of)g(the)f
(functions)h(in)g(POSIX)f(are)h(pro)-5 b(vided.)71 b(Both)45
b(the)g(in)-5 b(terface)45 b(and)581 4441 y(implemen)-5
b(tation)48 b(are)f(new)g(and)g(are)g(lik)-5 b(ely)46
b(to)h(c)-5 b(hange)47 b(in)h(future)e(releases.)72 b(Section)46
b(9.10)581 4641 y(lists)56 b(whic)-5 b(h)56 b(Sc)-5 b(heme)56
b(functions)g(call)g(whic)-5 b(h)56 b(C)f(functions.)830
4859 y(Sc)-5 b(heme)68 b(48's)f(POSIX)g(in)-5 b(terface)66
b(will)h(lik)-5 b(ely)67 b(c)-5 b(hange)67 b(signi\014can)-5
b(tly)68 b(in)f(the)g(future.)581 5058 y(The)55 b(implemen)-5
b(tation)57 b(is)f(new)f(and)h(ma)-5 b(y)56 b(ha)-5 b(v)g(e)56
b(signi\014can)-5 b(t)56 b(bugs.)830 5277 y(The)g(POSIX)f(bindings)i
(are)e(a)-5 b(v)c(ailable)56 b(in)f(sev)-5 b(eral)56
b(structures:)1542 5728 y Fl(posix-processes)464 b Fp(fork,)55
b(exec,)f(and)i(friends)1542 5927 y Fl(posix-process-data)203
b Fp(information)56 b(ab)5 b(out)55 b(pro)5 b(cesses)1542
6126 y Fl(posix-files)812 b Fp(\014les)56 b(and)g(directories)1542
6326 y Fl(posix-i/o)986 b Fp(op)5 b(erations)55 b(on)h(p)5
b(orts)1542 6525 y Fl(posix-time)899 b Fp(time)55 b(functions)1542
6724 y Fl(posix-users)812 b Fp(users)56 b(and)g(groups)1542
6923 y Fl(posix-regexps)638 b Fp(regular)55 b(expression)i(matc)-5
b(hing)1542 7123 y Fl(posix)1334 b Fp(all)55 b(of)g(the)g(ab)5
b(o)-5 b(v)g(e)830 7567 y(Sc)g(heme)75 b(48's)h(POSIX)e(in)-5
b(terface)74 b(di\013ers)h(from)g(Scsh's)h([11,)f(12])g(in)g(sev)-5
b(eral)75 b(w)-5 b(a)g(ys.)581 7766 y(The)67 b(in)-5
b(terface)67 b(here)g(lac)-5 b(ks)68 b(Scsh's)h(high-lev)-5
b(el)68 b(constructs)f(and)h(utilities,)j(suc)-5 b(h)68
b(as)g(the)581 7965 y(pro)5 b(cess)58 b(notation,)f Fl(awk)h
Fp(pro)5 b(cedure,)57 b(and)g(parsing)i(utilities.)79
b(Sc)-5 b(heme)57 b(48)g(uses)h(distinct)581 8164 y(t)-5
b(yp)5 b(es)69 b(for)g(some)h(v)-9 b(alues)70 b(that)e(Scsh)i(lea)-5
b(v)g(es)70 b(as)g(sym)-5 b(b)5 b(ols)71 b(or)e(un)-5
b(b)5 b(o)-5 b(xed)70 b(in)-5 b(tegers;)77 b(these)581
8364 y(include)60 b(\014le)g(t)-5 b(yp)5 b(es,)60 b(\014le)g(mo)5
b(des,)61 b(and)f(user)g(and)g(group)g(ids.)87 b(Man)-5
b(y)60 b(of)g(the)f(names)h(and)581 8563 y(other)55 b(in)-5
b(terface)55 b(details)h(are)f(di\013eren)-5 b(t,)56
b(as)f(w)-5 b(ell.)581 9214 y Fi(9.1)270 b(Pro)7 b(cess)90
b(primitiv)-7 b(es)581 9614 y Fp(The)63 b(pro)5 b(cedures)64
b(describ)5 b(ed)64 b(in)f(this)h(section)g(con)-5 b(trol)63
b(the)g(creation)g(of)g(pro)5 b(cesses)64 b(and)581 9813
y(the)80 b(execution)f(of)h(programs.)149 b(They)80 b(are)g(in)g(the)g
(structures)g Fl(posix-process)i Fp(and)581 10012 y Fl(posix)p
Fp(.)3321 10511 y(105)p eop end
%%Page: 106 114
TeXDict begin 106 113 bop 1478 1046 a Fc(9.1.1)225 b(Pro)6
b(cess)75 b(creation)f(and)g(termination)1511 1353 y
Fg(\017)83 b Fl(\(fork\))h Fg(!)f Fo(pr)-8 b(o)g(c)g(ess-id)82
b(or)h Fl(#f)1511 1552 y Fg(\017)g Fl(\(fork-and-forget)j
Fo(thunk)18 b Fl(\))1478 1841 y(Fork)48 b Fp(creates)f(a)g(new)g(c)-5
b(hild)49 b(pro)5 b(cess)47 b(and)h(returns)g(the)f(c)-5
b(hild's)49 b(pro)5 b(cess-id)48 b(in)g(the)f(paren)-5
b(t)1478 2040 y(and)49 b Fl(#f)g Fp(in)f(the)h(c)-5 b(hild.)72
b Fl(Fork-and-forget)51 b Fp(calls)e Fo(thunk)67 b Fp(in)49
b(a)g(new)f(pro)5 b(cess;)52 b(no)c(pro)5 b(cess-)1478
2239 y(id)47 b(is)g(returned.)71 b Fl(Fork-and-forget)49
b Fp(uses)e(an)g(in)-5 b(termediate)46 b(pro)5 b(cess)47
b(to)f(a)-5 b(v)g(oid)48 b(creating)1478 2439 y(a)55
b(zom)-5 b(bie)56 b(pro)5 b(cess.)1511 2727 y Fg(\017)83
b Fl(\(process-id?)102 b Fo(x)20 b Fl(\))83 b Fg(!)g
Fo(b)-8 b(o)g(ole)g(an)1511 2927 y Fg(\017)83 b Fl(\(process-id=?)102
b Fo(pr)-8 b(o)g(c)g(ess-id0)82 b(pr)-8 b(o)g(c)g(ess-id1)23
b Fl(\))82 b Fg(!)h Fo(b)-8 b(o)g(ole)g(an)1511 3126
y Fg(\017)83 b Fl(\(process-id->integer)k Fo(pr)-8 b(o)g(c)g(ess-id)17
b Fl(\))82 b Fg(!)h Fo(inte)-8 b(ger)1511 3325 y Fg(\017)83
b Fl(\(integer->process-id)k Fo(inte)-8 b(ger)18 b Fl(\))84
b Fg(!)f Fo(pr)-8 b(o)g(c)g(ess-id)1478 3614 y Fl(Process-id?)126
b Fp(is)72 b(a)g(predicate)g(for)g(pro)5 b(cess-ids,)78
b Fl(process-id=?)126 b Fp(compares)72 b(t)-5 b(w)g(o)73
b(to)1478 3813 y(see)85 b(if)g(they)f(are)g(the)h(same,)93
b(and)86 b Fl(process-id-uid)h Fp(returns)e(the)g(actual)f(Unix)h(id.)
1478 4013 y Fl(Process-id->integer)71 b Fp(and)d Fl
(integer->process-id)j Fp(con)-5 b(v)g(ert)68 b(pro)5
b(cess)69 b(ids)f(to)g(and)1478 4212 y(from)55 b(in)-5
b(tegers.)1511 4501 y Fg(\017)83 b Fl(\(process-id-exit-status)k
Fo(pr)-8 b(o)g(c)g(ess-id)17 b Fl(\))82 b Fg(!)h Fo(inte)-8
b(ger)85 b(or)e Fl(#f)1511 4700 y Fg(\017)g Fl
(\(process-id-terminating-signal)88 b Fo(pr)-8 b(o)g(c)g(ess-id)17
b Fl(\))83 b Fg(!)g Fo(signal)h(or)e Fl(#f)1511 4899
y Fg(\017)h Fl(\(wait-for-child-process)k Fo(pr)-8 b(o)g(c)g(ess-id)17
b Fl(\))1478 5188 y Fp(If)58 b(a)g(pro)5 b(cess)58 b(terminates)h
(normally)i Fl(process-id-exit-status)g Fp(will)e(return)f(its)g(exit)
1478 5388 y(status.)174 b(If)88 b(the)g(pro)5 b(cess)89
b(is)g(still)g(running)h(or)f(w)-5 b(as)89 b(terminated)f(b)-5
b(y)89 b(a)g(signal)g(then)1478 5587 y Fl(process-id-exit-status)i
Fp(will)e(return)f Fl(#f)p Fp(.)171 b(Similarly)-14 b(,)98
b(if)87 b(a)h(c)-5 b(hild)89 b(pro)5 b(cess)88 b(w)-5
b(as)1478 5786 y(terminated)58 b(b)-5 b(y)59 b(a)f(signal)h
Fl(process-id-terminating-signal)64 b Fp(will)58 b(return)h(that)e
(sig-)1478 5985 y(nal)73 b(and)g(will)g(return)f Fl(#f)h
Fp(if)g(the)f(pro)5 b(cess)73 b(is)g(still)h(running)f(or)g(terminated)
f(normally)-14 b(.)1478 6185 y Fl(Wait-for-child-process)52
b Fp(blo)5 b(c)-5 b(ks)48 b(un)-5 b(til)48 b(the)g(c)-5
b(hild)49 b(pro)5 b(cess)48 b(terminates.)72 b(Sc)-5
b(heme)48 b(48)1478 6384 y(ma)-5 b(y)59 b(reap)g(c)-5
b(hild)60 b(pro)5 b(cesses)60 b(b)5 b(efore)58 b(the)h(user)h(requests)
f(their)g(exit)f(status,)i(but)f(it)g(do)5 b(es)1478
6583 y(not)55 b(alw)-5 b(a)g(ys)56 b(do)g(so.)1511 6872
y Fg(\017)83 b Fl(\(exit)h Fo(status)14 b Fl(\))1478
7161 y Fp(T)-14 b(erminates)56 b(the)f(curren)-5 b(t)55
b(pro)5 b(cess)56 b(with)f(the)g(in)-5 b(teger)55 b Fo(status)70
b Fp(as)55 b(its)h(exit)e(status.)1478 7624 y Fc(9.1.2)225
b Fb(Exec)1511 7930 y Fg(\017)83 b Fl(\(exec)h Fo(pr)-8
b(o)g(gr)g(am-name)82 b(ar)-8 b(g0)83 b(.)25 b(.)g(.)g
Fl(\))1511 8129 y Fg(\017)83 b Fl(\(exec-with-environment)k
Fo(pr)-8 b(o)g(gr)g(am-name)82 b(env)i(ar)-8 b(g0)83
b(.)25 b(.)g(.)g Fl(\))1511 8329 y Fg(\017)83 b Fl(\(exec-file)i
Fo(\014lename)f(ar)-8 b(g0)83 b(.)25 b(.)g(.)g Fl(\))1511
8528 y Fg(\017)83 b Fl(\(exec-file-with-environment)88
b Fo(\014lename)c(env)g(ar)-8 b(g0)83 b(.)25 b(.)g(.)g
Fl(\))1511 8727 y Fg(\017)83 b Fl(\(exec-with-alias)j
Fo(name)d(lo)-8 b(okup?)100 b(mayb)-8 b(e-env)84 b(ar)-8
b(guments)14 b Fl(\))1478 9016 y Fp(All)66 b(of)h(these)f(replace)h
(the)f(curren)-5 b(t)67 b(program)g(with)g(a)f(new)h(one.)108
b(They)66 b(di\013er)h(in)g(ho)-5 b(w)1478 9215 y(the)78
b(new)g(program)h(is)f(found,)85 b(what)78 b(its)g(en)-5
b(vironmen)g(t)79 b(is,)85 b(and)78 b(what)g(argumen)-5
b(ts)80 b(it)1478 9415 y(is)j(passed.)157 b Fl(Exec)83
b Fp(and)g Fl(exec-with-environment)j Fp(lo)5 b(ok)82
b(up)h(the)f(new)h(program)g(in)1478 9614 y(the)61 b(searc)-5
b(h)63 b(path,)h(while)e Fl(exec-file)h Fp(and)f Fl
(exec-file-with-environment)67 b Fp(execute)1478 9813
y(a)79 b(particular)f(\014le.)145 b(The)78 b(en)-5 b(vironmen)g(t)80
b(is)f(either)g(inherited)g(from)f(the)h(curren)-5 b(t)79
b(pro-)1478 10012 y(cess)52 b(\()p Fl(exec)g Fp(and)g
Fl(exec-file)p Fp(\))g(or)g(giv)-5 b(en)52 b(as)g(an)f(argumen)-5
b(t)53 b(\()p Fl(...-with-environment)p Fp(\).)4218 10511
y(106)p eop end
%%Page: 107 115
TeXDict begin 107 114 bop 581 1046 a Fo(Pr)-8 b(o)g(gr)g(am-name)68
b Fp(and)58 b Fo(\014lename)71 b Fp(and)57 b(an)-5 b(y)60
b Fo(ar)-8 b(g)3571 1071 y Fa(i)3683 1046 y Fp(should)58
b(b)5 b(e)57 b Fo(os-string-thing)73 b Fp(argumen)-5
b(ts)581 1245 y(\(see)53 b(section)h(5.15.)73 b Fo(Env)f
Fp(should)54 b(b)5 b(e)54 b(a)f(list)h(of)f Fo(os-string-thing)70
b Fp(argumen)-5 b(ts)54 b(of)g(the)f(form)581 1445 y
Fl(")p Fo(name)12 b Fl(=)p Fo(value)g Fl(")p Fp(.)131
b(The)74 b(\014rst)f(four)h(pro)5 b(cedures)73 b(add)h(their)f(\014rst)
h(argumen)-5 b(t,)79 b Fo(pr)-8 b(o)g(gr)g(am-)581 1644
y(name)68 b Fp(or)56 b Fo(\014lename)12 b Fp(,)57 b(b)5
b(efore)55 b(the)g Fo(ar)-8 b(g0)59 b(.)25 b(.)g(.)100
b Fp(argumen)-5 b(ts.)830 1914 y Fl(Exec-with-alias)72
b Fp(is)e(an)f(omnibus)i(pro)5 b(cedure)69 b(that)g(subsumes)j(the)d
(other)g(four.)581 2113 y Fo(Name)57 b Fp(is)45 b(lo)5
b(ok)-5 b(ed)43 b(up)i(in)f(the)g(searc)-5 b(h)45 b(path)f(if)56
b Fo(lo)-8 b(okup?)91 b Fp(is)44 b(true)g(and)g(is)h(used)g(as)f(a)g
(\014lename)581 2312 y(otherwise.)82 b Fo(Mayb)-8 b(e-env)77
b Fp(is)58 b(either)g(a)g(list)g(of)g Fo(os-string-thing)16
b Fp(s)59 b(for)f(the)f(en)-5 b(vironmen)g(t)59 b(of)581
2511 y(the)52 b(new)g(program)h(or)f Fl(#f)g Fp(in)h(whic)-5
b(h)53 b(case)f(the)g(new)g(program)h(inherits)f(its)h(en)-5
b(vironmen)g(t)581 2711 y(from)43 b(the)g(curren)-5 b(t)43
b(one.)69 b Fo(A)l(r)-8 b(guments)58 b Fp(should)44 b(b)5
b(e)42 b(a)h(list)g(of)g Fo(os-string-thing)17 b Fp(s;)47
b(unlik)-5 b(e)44 b(with)581 2910 y(the)53 b(other)f(four)h(pro)5
b(cedures,)54 b Fo(name)65 b Fp(is)54 b(not)f(added)g(to)f(this)i(list)
f(\(hence)f Fl(-with-alias)p Fp(\).)581 3833 y Fi(9.2)270
b(Signals)581 4328 y Fp(There)64 b(are)f(t)-5 b(w)g(o)64
b(v)-9 b(arieties)64 b(of)f(signals)j(a)-5 b(v)c(ailable,)66
b Fo(name)-8 b(d)63 b Fp(and)i Fo(anonymous)p Fp(.)99
b(A)63 b(named)581 4527 y(signal)52 b(is)e(one)h(for)f(whic)-5
b(h)51 b(w)-5 b(e)50 b(ha)-5 b(v)g(e)51 b(a)g(sym)-5
b(b)5 b(olic)51 b(name,)h(suc)-5 b(h)51 b(as)g Fl(kill)g
Fp(or)f Fl(pipe)p Fp(.)73 b(Anon)-5 b(y-)581 4726 y(mous)84
b(signals,)91 b(for)82 b(whic)-5 b(h)83 b(w)-5 b(e)83
b(only)f(ha)-5 b(v)g(e)83 b(the)f(curren)-5 b(t)83 b(op)5
b(erating)82 b(system's)i(signal)581 4926 y(n)-5 b(um)g(b)5
b(er,)62 b(ha)-5 b(v)g(e)60 b(no)g(meaning)h(in)f(other)f(op)5
b(erating)59 b(systems.)88 b(Named)59 b(signals)i(preserv)-5
b(e)581 5125 y(their)59 b(meaning)g(in)g(image)g(\014les.)85
b(Not)58 b(all)h(named)g(signals)h(are)f(a)-5 b(v)c(ailable)59
b(from)g(all)g(OS's)581 5324 y(and)d(there)f(ma)-5 b(y)56
b(b)5 b(e)55 b(m)-5 b(ultiple)56 b(names)g(for)f(a)h(single)g(OS)g
(signal)g(n)-5 b(um)g(b)5 b(er.)614 5835 y Fg(\017)83
b Fl(\(signal)i Fo(signal-name)12 b Fl(\))57 b Fg(!)f
Fo(signal)2703 b Fp(syn)-5 b(tax)614 6034 y Fg(\017)83
b Fl(\(name->signal)j Fo(symb)-8 b(ol)17 b Fl(\))83 b
Fg(!)g Fo(signal)g(or)g Fl(#f)614 6233 y Fg(\017)g Fl
(\(integer->signal)j Fo(inte)-8 b(ger)18 b Fl(\))84 b
Fg(!)f Fo(signal)614 6432 y Fg(\017)g Fl(\(signal?)102
b Fo(x)20 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614
6632 y Fg(\017)83 b Fl(\(signal-name)i Fo(signal)17 b
Fl(\))85 b Fg(!)e Fo(symb)-8 b(ol)82 b(or)h Fl(#f)614
6831 y Fg(\017)g Fl(\(signal-os-number)j Fo(signal)17
b Fl(\))85 b Fg(!)e Fo(inte)-8 b(ger)614 7030 y Fg(\017)83
b Fl(\(signal=?)102 b Fo(signal0)84 b(signal1)23 b Fl(\))83
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)581 7540 y Fp(The)37
b(syn)-5 b(tax)37 b Fl(signal)h Fp(returns)f(a)g(\(named\))g(signal)h
(asso)5 b(ciated)37 b(with)g Fo(signal-name)12 b Fp(.)70
b Fl(Name->signal)581 7740 y Fp(returns)62 b(a)f(\(named\))g(signal)i
(or)e Fl(#f)h Fp(if)f(the)g(the)g(signal)h Fo(name)74
b Fp(is)62 b(not)g(supp)5 b(orted)61 b(b)-5 b(y)62 b(the)581
7939 y(op)5 b(erating)58 b(system.)82 b(The)58 b(signal)h(returned)f(b)
-5 b(y)60 b Fl(integer->signal)h Fp(is)d(a)g(named)h(signal)581
8138 y(if)72 b Fo(inte)-8 b(ger)78 b Fp(corresp)5 b(onds)61
b(to)e(a)g(named)h(signal)g(in)g(the)e(curren)-5 b(t)60
b(op)5 b(erating)59 b(system;)i(oth-)581 8337 y(erwise)54
b(it)f(returns)g(an)h(anon)-5 b(ymous)55 b(signal.)74
b Fl(Signal-name)55 b Fp(returns)f(a)g(sym)-5 b(b)5 b(ol)54
b(if)66 b Fo(signal)581 8537 y Fp(is)49 b(named)h(and)f
Fl(#f)g Fp(if)f(it)g(is)i(anon)-5 b(ymous.)73 b Fl(Signal=?)g
Fp(returns)49 b Fl(#t)g Fp(if)61 b Fo(signal0)72 b Fp(and)49
b Fo(signal1)581 8736 y Fp(ha)-5 b(v)g(e)56 b(the)f(same)h(op)5
b(erating)55 b(system)h(n)-5 b(um)g(b)5 b(er)56 b(and)g
Fl(#f)g Fp(if)f(they)g(do)g(not.)581 9575 y Fc(9.2.1)225
b(POSIX)76 b(signals)581 10012 y Fp(The)55 b(follo)-5
b(wing)57 b(lists)f(the)f(names)h(of)f(the)g(POSIX)g(signals.)3321
10511 y(107)p eop end
%%Page: 108 116
TeXDict begin 108 115 bop 1577 1202 a Fl(abrt)200 b Fp(ab)5
b(ort)55 b(-)h(abnormal)g(termination)g(\(as)f(b)-5 b(y)56
b(ab)5 b(ort\(\)\))1577 1401 y Fl(alrm)200 b Fp(alarm)56
b(-)g(timeout)f(signal)h(\(as)g(b)-5 b(y)55 b(alarm\(\)\))1577
1601 y Fl(fpe)287 b Fp(\015oating)56 b(p)5 b(oin)-5 b(t)56
b(exception)1577 1800 y Fl(hup)287 b Fp(hangup)57 b(-)e(hangup)i(on)e
(con)-5 b(trolling)57 b(terminal)e(or)h(death)f(of)g(con)-5
b(trolling)56 b(pro)5 b(cess)1577 1999 y Fl(ill)287 b
Fp(illegal)56 b(instruction)1577 2198 y Fl(int)287 b
Fp(in)-5 b(terrupt)56 b(-)g(in)-5 b(teraction)55 b(atten)-5
b(tion)1577 2398 y Fl(kill)200 b Fp(kill)56 b(-)f(termination)h
(signal,)g(cannot)g(b)5 b(e)55 b(caugh)-5 b(t)55 b(or)h(ignored)1577
2597 y Fl(pipe)200 b Fp(pip)5 b(e)56 b(-)f(write)g(on)h(a)f(pip)5
b(e)56 b(with)f(no)g(readers)1577 2796 y Fl(quit)200
b Fp(quit)55 b(-)h(in)-5 b(teraction)55 b(termination)1577
2995 y Fl(segv)200 b Fp(segmen)-5 b(tation)56 b(violation)g(-)f(in)-5
b(v)c(alid)56 b(memory)g(reference)1577 3195 y Fl(term)200
b Fp(termination)56 b(-)g(termination)f(signal)1577 3394
y Fl(usr1)200 b Fp(user1)56 b(-)g(for)f(use)h(b)-5 b(y)56
b(applications)1577 3593 y Fl(usr2)200 b Fp(user2)56
b(-)g(for)f(use)h(b)-5 b(y)56 b(applications)1577 3792
y Fl(chld)200 b Fp(c)-5 b(hild)57 b(-)e(c)-5 b(hild)57
b(pro)5 b(cess)55 b(stopp)5 b(ed)56 b(or)f(terminated)1577
3992 y Fl(cont)200 b Fp(con)-5 b(tin)g(ue)57 b(-)e(con)-5
b(tin)g(ue)56 b(if)g(stopp)5 b(ed)1577 4191 y Fl(stop)200
b Fp(stop)56 b(-)g(cannot)f(b)5 b(e)55 b(caugh)-5 b(t)56
b(or)f(ignored)1577 4390 y Fl(tstp)200 b Fp(in)-5 b(teractiv)g(e)55
b(stop)1577 4589 y Fl(ttin)200 b Fp(read)56 b(from)f(con)-5
b(trol)56 b(terminal)g(attempted)e(b)-5 b(y)56 b(bac)-5
b(kground)56 b(pro)5 b(cess)1577 4789 y Fl(ttou)200 b
Fp(write)55 b(to)g(con)-5 b(trol)56 b(terminal)f(attempted)g(b)-5
b(y)55 b(bac)-5 b(kground)57 b(pro)5 b(cess)1577 4988
y Fl(bus)287 b Fp(bus)57 b(error)e(-)h(access)f(to)g(unde\014ned)i(p)5
b(ortion)55 b(of)g(memory)1478 5435 y Fc(9.2.2)225 b(Other)74
b(signals)1478 5742 y Fp(The)83 b(follo)-5 b(wing)83
b(lists)h(the)f(names)h(of)f(the)f(non-POSIX)i(signals)g(that)f(the)f
(system)i(is)1478 5941 y(curren)-5 b(tly)55 b(a)-5 b(w)g(are)56
b(of.)2624 6445 y Fl(trap)374 b Fp(trace)55 b(or)g(breakp)5
b(oin)-5 b(t)56 b(trap)2624 6644 y Fl(iot)461 b Fp(IOT)56
b(trap)f(-)h(a)f(synon)-5 b(ym)57 b(for)e(ABR)-14 b(T)2624
6843 y Fl(emt)2624 7042 y(sys)461 b Fp(bad)56 b(argumen)-5
b(t)56 b(to)f(routine)h(\(SVID\))2624 7242 y Fl(stkflt)200
b Fp(stac)-5 b(k)56 b(fault)f(on)g(copro)5 b(cessor)2624
7441 y Fl(urg)461 b Fp(urgen)-5 b(t)56 b(condition)g(on)f(so)5
b(c)-5 b(k)g(et)56 b(\(4.2)f(BSD\))2624 7640 y Fl(io)548
b Fp(I/O)56 b(no)-5 b(w)56 b(p)5 b(ossible)56 b(\(4.2)f(BSD\))2624
7839 y Fl(poll)374 b Fp(A)55 b(synon)-5 b(ym)57 b(for)e(SIGIO)h
(\(System)f(V\))2624 8039 y Fl(cld)461 b Fp(A)55 b(synon)-5
b(ym)57 b(for)e(SIGCHLD)2624 8238 y Fl(xcpu)374 b Fp(CPU)55
b(time)g(limit)h(exceeded)f(\(4.2)g(BSD\))2624 8437 y
Fl(xfsz)374 b Fp(File)56 b(size)g(limit)f(exceeded)g(\(4.2)g(BSD\))2624
8636 y Fl(vtalrm)200 b Fp(Virtual)55 b(alarm)h(clo)5
b(c)-5 b(k)55 b(\(4.2)g(BSD\))2624 8836 y Fl(prof)374
b Fp(Pro\014le)56 b(alarm)g(clo)5 b(c)-5 b(k)2624 9035
y Fl(pwr)461 b Fp(P)-5 b(o)g(w)g(er)57 b(failure)e(\(System)g(V\))2624
9234 y Fl(info)374 b Fp(A)55 b(synon)-5 b(ym)57 b(for)e(SIGPWR)2624
9433 y Fl(lost)374 b Fp(File)56 b(lo)5 b(c)-5 b(k)55
b(lost)2624 9633 y Fl(winch)287 b Fp(Windo)-5 b(w)56
b(resize)g(signal)g(\(4.3)f(BSD,)g(Sun\))2624 9832 y
Fl(unused)200 b Fp(Un)-5 b(used)57 b(signal)4218 10511
y(108)p eop end
%%Page: 109 117
TeXDict begin 109 116 bop 581 1541 a Fc(9.2.3)225 b(Sending)74
b(signals)614 1853 y Fg(\017)83 b Fl(\(signal-process)j
Fo(pr)-8 b(o)g(c)g(ess-id)82 b(signal)17 b Fl(\))581
2168 y Fp(Send)56 b Fo(signal)73 b Fp(to)55 b(the)g(pro)5
b(cess)56 b(corresp)5 b(onding)56 b(to)f Fo(pr)-8 b(o)g(c)g(ess-id)17
b Fp(.)581 2664 y Fc(9.2.4)225 b(Receiving)76 b(signals)581
2981 y Fp(Signals)54 b(receiv)-5 b(ed)51 b(b)-5 b(y)53
b(the)e(Sc)-5 b(heme)53 b(pro)5 b(cess)53 b(can)f(b)5
b(e)51 b(obtained)i(via)f(one)g(or)g(more)g(signal-)581
3180 y(queues.)70 b(Eac)-5 b(h)43 b(signal)g(queue)f(has)h(a)f(list)h
(of)f(monitored)g(signals)i(and)f(a)f(queue)g(of)g(receiv)-5
b(ed)581 3379 y(signals)40 b(that)f(ha)-5 b(v)g(e)39
b(y)-5 b(et)38 b(to)g(b)5 b(e)39 b(read)g(from)g(the)f(signal-queue.)70
b(When)38 b(the)h(Sc)-5 b(heme)39 b(pro)5 b(cess)581
3578 y(receiv)-5 b(es)55 b(a)g(signal)g(that)g(signal)g(is)h(added)f
(to)g(the)f(receiv)-5 b(ed-signal)56 b(queues)f(of)f(all)h(signal-)581
3778 y(queues)h(whic)-5 b(h)56 b(are)f(curren)-5 b(tly)55
b(monitoring)h(that)f(particular)h(signal.)614 4094 y
Fg(\017)83 b Fl(\(make-signal-queue)k Fo(signals)14 b
Fl(\))83 b Fg(!)g Fo(signal-queue)614 4293 y Fg(\017)g
Fl(\(signal-queue?)103 b Fo(x)20 b Fl(\))83 b Fg(!)g
Fo(b)-8 b(o)g(ole)g(an)614 4492 y Fg(\017)83 b Fl
(\(signal-queue-monitored-signals)89 b Fo(signal-queue)12
b Fl(\))86 b Fg(!)d Fo(list)h(of)e(signals)614 4691 y
Fg(\017)h Fl(\(dequeue-signal!)103 b Fo(signal-queue)12
b Fl(\))86 b Fg(!)e Fo(signal)614 4891 y Fg(\017)f Fl
(\(maybe-dequeue-signal!)104 b Fo(signal-queue)12 b Fl(\))86
b Fg(!)e Fo(signal)f(or)g Fl(#f)581 5207 y(Make-signal-queue)51
b Fp(returns)e(a)f(new)g(signal-queue)i(that)d(will)i(monitor)g(the)f
(signals)h(in)581 5406 y(the)37 b(list)g Fo(signals)14
b Fp(.)68 b Fl(Signal-queue?)i Fp(is)37 b(a)g(predicate)g(for)g(signal)
h(queues.)67 b Fl(Signal-queue-monitored-signals)581
5605 y Fp(returns)37 b(a)g(list)h(of)e(the)h(signals)h(curren)-5
b(tly)37 b(monitored)g(b)-5 b(y)40 b Fo(signal-queue)12
b Fp(.)71 b Fl(Dequeue-signal!)581 5804 y Fp(and)k Fl
(maybe-dequeue-signal)k Fp(b)5 b(oth)74 b(return)h(the)f(next)g(receiv)
-5 b(ed-but-unread)76 b(signal)581 6004 y(from)43 b Fo(signal-queue)12
b Fp(.)73 b(If)55 b Fo(signal-queue)12 b Fp('s)47 b(queue)42
b(of)g(signals)j(is)e(empt)-5 b(y)45 b Fl(dequeue-signal!)581
6203 y Fp(blo)5 b(c)-5 b(ks)68 b(un)-5 b(til)68 b(an)f(appropriate)h
(signal)g(is)g(receiv)-5 b(ed.)109 b Fl(Maybe-dequeue-signal!)k
Fp(do)5 b(es)581 6402 y(not)55 b(blo)5 b(c)-5 b(k;)56
b(it)f(returns)g Fl(#f)h Fp(instead.)830 6607 y(There)46
b(is)g(a)g(bug)g(in)g(the)g(curren)-5 b(t)46 b(system)g(that)f(causes)i
(an)f(erroneous)g(deadlo)5 b(c)-5 b(k)46 b(error)581
6806 y(if)59 b(threads)g(are)g(blo)5 b(c)-5 b(k)g(ed)59
b(w)-5 b(aiting)59 b(for)f(signals)j(and)e(no)g(other)f(threads)h(are)g
(a)-5 b(v)c(ailable)59 b(to)581 7006 y(run.)119 b(A)70
b(w)-5 b(ork)70 b(around)i(is)e(to)g(create)g(a)g(thread)g(that)g
(sleeps)h(for)f(a)g(long)h(time,)j(whic)-5 b(h)581 7205
y(prev)g(en)g(ts)56 b(an)-5 b(y)56 b(deadlo)5 b(c)-5
b(k)55 b(errors)h(\(including)g(real)f(ones\):)581 7560
y Fl(>)87 b(,open)i(threads)581 7759 y(>)e(\(spawn)i(\(lambda)f(\(\))
1540 7958 y(;)f(Sleep)h(for)g(a)f(year)1540 8157 y(\(sleep)h(\(*)g
(1000)g(60)f(60)h(24)f(365\)\)\)\))614 8501 y Fg(\017)c
Fl(\(add-signal-queue-signal!)88 b Fo(signal-queue)d(signal)17
b Fl(\))614 8700 y Fg(\017)83 b Fl(\(remove-signal-queue-signal!)88
b Fo(signal-queue)e(signal)17 b Fl(\))581 9016 y Fp(These)83
b(t)-5 b(w)g(o)83 b(pro)5 b(cedures)82 b(can)h(b)5 b(e)82
b(used)h(to)f(add)h(or)f(remo)-5 b(v)g(e)83 b(signals)h(from)f(a)f
(signal-)581 9215 y(queue's)f(list)g(of)g(monitored)g(signals.)152
b(When)81 b(a)g(signal)h(is)f(remo)-5 b(v)g(ed)81 b(from)g(a)g(signal-)
581 9415 y(queue's)54 b(list)f(of)g(monitored)h(signals)g(an)-5
b(y)54 b(o)5 b(ccurances)53 b(of)g(the)f(signal)j(are)e(remo)-5
b(v)g(ed)54 b(from)581 9614 y(that)76 b(signal-queue's)j(p)5
b(ending)78 b(signals.)140 b(In)77 b(other)g(w)-5 b(ords,)83
b Fl(dequeue-signal!)141 b Fp(and)581 9813 y Fl(maybe-dequeue-signal!)
157 b Fp(will)82 b(only)g(return)g(signals)h(that)f(are)f(curren)-5
b(tly)82 b(on)g(the)581 10012 y(signal-queue's)57 b(list)f(of)f
(signals.)3321 10511 y(109)p eop end
%%Page: 110 118
TeXDict begin 110 117 bop 1478 1046 a Fi(9.3)269 b(Pro)7
b(cess)90 b(en)-7 b(vironmen)g(t)1478 1413 y Fp(These)55
b(are)h(in)f(structures)h Fl(posix-process-data)i Fp(and)e
Fl(posix)p Fp(.)1478 1885 y Fc(9.3.1)225 b(Pro)6 b(cess)75
b(iden)-6 b(ti\014cation)1511 2193 y Fg(\017)83 b Fl
(\(get-process-id\))j Fg(!)166 b Fo(pr)-8 b(o)g(c)g(ess-id)1511
2392 y Fg(\017)83 b Fl(\(get-parent-process-id\))k Fg(!)166
b Fo(pr)-8 b(o)g(c)g(ess-id)1478 2696 y Fp(These)74 b(return)g(the)g
(pro)5 b(cess)74 b(ids)h(of)f(the)f(curren)-5 b(t)75
b(pro)5 b(cess)74 b(and)h(its)f(paren)-5 b(t.)130 b(See)74
b(sec-)1478 2895 y(tion)55 b(9.1.1)h(for)f(op)5 b(erations)55
b(on)h(pro)5 b(cess)56 b(ids.)1511 3199 y Fg(\017)83
b Fl(\(get-user-id\))i Fg(!)166 b Fo(user-id)1511 3398
y Fg(\017)83 b Fl(\(get-effective-user-id\))k Fg(!)166
b Fo(user-id)1511 3597 y Fg(\017)83 b Fl(\(set-user-id!)i
Fo(user-id)17 b Fl(\))1511 3899 y Fg(\017)83 b Fl(\(get-group-id\))i
Fg(!)167 b Fo(gr)-8 b(oup-id)1511 4098 y Fg(\017)83 b
Fl(\(get-effective-group-id\))k Fg(!)166 b Fo(gr)-8 b(oup-id)1511
4297 y Fg(\017)83 b Fl(\(set-group-id!)i Fo(gr)-8 b(oup-id)17
b Fl(\))1478 4601 y Fp(Ev)-5 b(ery)71 b(pro)5 b(cess)73
b(has)g(b)5 b(oth)71 b(the)h(original)h(and)f(e\013ectiv)-5
b(e)71 b(user)i(id)f(and)g(group)h(id.)124 b(The)1478
4800 y(e\013ectiv)-5 b(e)54 b(v)-9 b(alues)55 b(ma)-5
b(y)56 b(b)5 b(e)55 b(set,)g(but)h(not)f(the)g(original)h(ones.)1511
5104 y Fg(\017)83 b Fl(\(get-groups\))i Fg(!)166 b Fo(gr)-8
b(oup-ids)1511 5303 y Fg(\017)83 b Fl(\(get-login-name\))j
Fg(!)166 b Fo(os-string)1478 5606 y Fl(Get-groups)62
b Fp(returns)g(a)e(list)i(of)e(the)h(supplemen)-5 b(tary)62
b(groups)g(of)e(the)h(curren)-5 b(t)61 b(pro)5 b(cess.)1478
5805 y Fl(Get-login-name)58 b Fp(returns)d(a)h(user)g(name)f(for)h(the)
f(curren)-5 b(t)55 b(pro)5 b(cess.)1478 6278 y Fc(9.3.2)225
b(En)-6 b(vironmen)g(t)73 b(v)-12 b(ariables)1511 6586
y Fg(\017)83 b Fl(\(lookup-environment-variable)88 b
Fo(os-string-thing)15 b Fl(\))85 b Fg(!)e Fo(os-string)h(or)f
Fl(#f)1511 6785 y Fg(\017)g Fl(\(environment-alist\))j
Fg(!)d Fo(alist)1478 7089 y Fl(Lookup-environment-variable)63
b Fp(lo)5 b(oks)58 b(up)g(its)h(argumen)-5 b(t)59 b(in)f(the)g(en)-5
b(vironmen)g(t)59 b(list)1478 7288 y(and)49 b(returns)g(the)f(corresp)5
b(onding)49 b(v)-9 b(alue)48 b(or)h Fl(#f)g Fp(if)f(there)g(is)h(none.)
72 b Fl(Environment-alist)1478 7487 y Fp(returns)48 b(the)g(en)-5
b(tire)48 b(en)-5 b(vironmen)g(t)49 b(as)g(a)f(list)h(of)61
b Fl(\()p Fo(name-os-string)103 b Fl(.)175 b Fo(value-os-string)15
b Fl(\))1478 7687 y Fp(pairs.)1478 8244 y Fi(9.4)269
b(Users)90 b(and)g(groups)1478 8610 y Fo(User-id)17 b
Fp(s)58 b(and)g Fo(gr)-8 b(oup-id)17 b Fp(s)58 b(are)e(b)5
b(o)-5 b(xed)57 b(in)-5 b(tegers)58 b(represen)-5 b(ting)58
b(Unix)e(users)j(and)e(groups.)1478 8809 y(The)e(pro)5
b(cedures)56 b(in)g(this)f(section)h(are)f(in)h(structures)f
Fl(posix-users)i Fp(and)f Fl(posix)p Fp(.)1511 9113 y
Fg(\017)83 b Fl(\(user-id?)102 b Fo(x)20 b Fl(\))83 b
Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1511 9312 y Fg(\017)83
b Fl(\(user-id=?)102 b Fo(user-id0)83 b(user-id1)23 b
Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1511 9511 y
Fg(\017)83 b Fl(\(user-id->integer)j Fo(user-id)17 b
Fl(\))84 b Fg(!)f Fo(inte)-8 b(ger)1511 9711 y Fg(\017)83
b Fl(\(integer->user-id)j Fo(inte)-8 b(ger)18 b Fl(\))84
b Fg(!)f Fo(user-id)1511 10012 y Fg(\017)g Fl(\(group-id?)102
b Fo(x)20 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)4218
10511 y Fp(110)p eop end
%%Page: 111 119
TeXDict begin 111 118 bop 614 1046 a Fg(\017)83 b Fl(\(group-id=?)102
b Fo(gr)-8 b(oup-id0)83 b(gr)-8 b(oup-id1)23 b Fl(\))83
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614 1245 y Fg(\017)83
b Fl(\(group-id->integer)k Fo(gr)-8 b(oup-id)17 b Fl(\))83
b Fg(!)g Fo(inte)-8 b(ger)614 1445 y Fg(\017)83 b Fl
(\(integer->group-id)k Fo(inte)-8 b(ger)18 b Fl(\))84
b Fg(!)f Fo(gr)-8 b(oup-id)581 1740 y Fp(User-ids)56
b(and)g(group-ids)h(ha)-5 b(v)g(e)55 b(their)g(o)-5 b(wn)56
b(o)-5 b(wn)56 b(predicates)f(and)h(comparison,)g(b)5
b(o)-5 b(xing,)581 1940 y(and)56 b(un)-5 b(b)5 b(o)-5
b(xing)57 b(functions.)614 2235 y Fg(\017)83 b Fl(\(user-id->user-info)
k Fo(user-id)17 b Fl(\))84 b Fg(!)f Fo(user-info)614
2435 y Fg(\017)g Fl(\(name->user-info)j Fo(os-string)15
b Fl(\))84 b Fg(!)f Fo(user-info)581 2730 y Fp(These)56
b(return)f(the)g(user)h(info)f(for)h(a)f(user)h(iden)-5
b(ti\014ed)56 b(b)-5 b(y)56 b(user-id)g(or)g(name.)614
3026 y Fg(\017)83 b Fl(\(user-info?)102 b Fo(x)20 b Fl(\))84
b Fg(!)166 b Fo(b)-8 b(o)g(ole)g(an)614 3225 y Fg(\017)83
b Fl(\(user-info-name)j Fo(user-info)10 b Fl(\))85 b
Fg(!)166 b Fo(os-string)614 3425 y Fg(\017)83 b Fl(\(user-info-id)j
Fo(user-info)10 b Fl(\))84 b Fg(!)166 b Fo(user-id)614
3624 y Fg(\017)83 b Fl(\(user-info-group)j Fo(user-info)10
b Fl(\))85 b Fg(!)166 b Fo(gr)-8 b(oup-id)614 3823 y
Fg(\017)83 b Fl(\(user-info-home-directory)88 b Fo(user-info)10
b Fl(\))84 b Fg(!)166 b Fo(os-string)614 4022 y Fg(\017)83
b Fl(\(user-info-shell)j Fo(user-info)10 b Fl(\))85 b
Fg(!)166 b Fo(os-string)581 4318 y Fp(A)49 b Fl(user-info)i
Fp(con)-5 b(tains)50 b(information)g(ab)5 b(out)49 b(a)h(user.)72
b(Av)-9 b(ailable)49 b(are)g(the)h(user's)g(name,)581
4518 y(id,)56 b(group,)g(home)g(directory)-14 b(,)55
b(and)h(shell.)614 4813 y Fg(\017)83 b Fl(\(group-id->group-info)k
Fo(gr)-8 b(oup-id)17 b Fl(\))83 b Fg(!)g Fo(gr)-8 b(oup-info)614
5013 y Fg(\017)83 b Fl(\(name->group-info)j Fo(os-string)15
b Fl(\))84 b Fg(!)f Fo(gr)-8 b(oup-info)581 5308 y Fp(These)56
b(return)f(the)g(group)h(info)f(for)h(a)f(group)h(iden)-5
b(ti\014ed)56 b(b)-5 b(y)56 b(group-id)g(or)g(name.)614
5604 y Fg(\017)83 b Fl(\(group-info?)102 b Fo(x)20 b
Fl(\))84 b Fg(!)166 b Fo(b)-8 b(o)g(ole)g(an)614 5803
y Fg(\017)83 b Fl(\(group-info-name)j Fo(gr)-8 b(oup-info)10
b Fl(\))84 b Fg(!)166 b Fo(os-string)614 6003 y Fg(\017)83
b Fl(\(group-info-id)j Fo(gr)-8 b(oup-info)10 b Fl(\))84
b Fg(!)166 b Fo(gr)-8 b(oup-id)614 6202 y Fg(\017)83
b Fl(\(group-info-members)k Fo(gr)-8 b(oup-info)10 b
Fl(\))84 b Fg(!)166 b Fo(user-ids)581 6498 y Fp(A)64
b Fl(group-info)h Fp(con)-5 b(tains)65 b(information)f(ab)5
b(out)64 b(a)g(group.)100 b(Av)-9 b(ailable)63 b(are)h(the)f(group's)
581 6697 y(name,)56 b(id,)g(and)g(a)f(list)h(of)f(mem)-5
b(b)5 b(ers.)581 7245 y Fi(9.5)270 b(OS)90 b(and)g(mac)-7
b(hine)89 b(iden)-7 b(ti\014cation)581 7609 y Fp(These)67
b(pro)5 b(cedures)66 b(return)g(strings)i(that)d(are)h(supp)5
b(osed)68 b(to)e(iden)-5 b(tify)66 b(the)g(curren)-5
b(t)66 b(OS)581 7808 y(and)52 b(mac)-5 b(hine.)74 b(The)51
b(POSIX)g(standard)i(do)5 b(es)51 b(not)h(indicate)f(the)g(format)g(of)
h(the)f(strings.)581 8008 y(The)k(pro)5 b(cedures)56
b(are)f(in)h(structures)g Fl(posix-platform-names)j Fp(and)c
Fl(posix)p Fp(.)614 8303 y Fg(\017)83 b Fl(\(os-name\))i
Fg(!)e Fo(string)614 8503 y Fg(\017)g Fl(\(os-node-name\))j
Fg(!)d Fo(string)614 8702 y Fg(\017)g Fl(\(os-release-name\))j
Fg(!)d Fo(string)614 8901 y Fg(\017)g Fl(\(os-version-name\))j
Fg(!)d Fo(string)614 9100 y Fg(\017)g Fl(\(machine-name\))j
Fg(!)d Fo(string)581 9649 y Fi(9.6)270 b(Files)89 b(and)h(directories)
581 10012 y Fp(These)56 b(pro)5 b(cedures)55 b(are)h(in)f(structures)h
Fl(posix-files)h Fp(and)f Fl(posix)p Fp(.)3321 10511
y(111)p eop end
%%Page: 112 120
TeXDict begin 112 119 bop 1478 1046 a Fc(9.6.1)225 b(Directory)74
b(streams)1478 1389 y Fp(Directory)59 b(streams)h(are)g(lik)-5
b(e)60 b(input)g(p)5 b(orts,)61 b(with)f(eac)-5 b(h)60
b(read)g(op)5 b(eration)60 b(returning)g(the)1478 1588
y(next)54 b(name)i(in)g(the)f(directory)-14 b(.)1511
1945 y Fg(\017)83 b Fl(\(open-directory-stream)k Fo(name)12
b Fl(\))84 b Fg(!)f Fo(dir)-8 b(e)g(ctory)1511 2144 y
Fg(\017)83 b Fl(\(directory-stream?)103 b Fo(x)20 b Fl(\))83
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1511 2344 y Fg(\017)83
b Fl(\(read-directory-stream)k Fo(dir)-8 b(e)g(ctory)15
b Fl(\))82 b Fg(!)h Fo(name)g(or)g Fl(#f)1511 2543 y
Fg(\017)g Fl(\(close-directory-stream)k Fo(dir)-8 b(e)g(ctory)15
b Fl(\))1478 2900 y(Open-directory-stream)43 b Fp(op)5
b(ens)40 b(a)g(new)g(directory)f(stream.)69 b Fl(Directory-stream?)j
Fp(is)1478 3099 y(a)45 b(predicate)h(that)f(recognizes)g(directory)g
(streams.)72 b Fl(Read-directory-stream)49 b Fp(returns)1478
3298 y(the)36 b(next)g(name)i(in)f(the)g(directory)f(or)h
Fl(#f)g Fp(if)g(all)g(names)h(ha)-5 b(v)g(e)37 b(b)5
b(een)37 b(read.)68 b Fl(Close-directory-stream)1478
3498 y Fp(closes)56 b(a)f(directory)g(stream.)1511 3855
y Fg(\017)83 b Fl(\(list-directory)j Fo(name)12 b Fl(\))84
b Fg(!)f Fo(list)g(of)g(os-strings)1478 4212 y Fp(This)56
b(is)g(the)f(ob)-5 b(vious)56 b(utilit)-5 b(y;)56 b(it)f(returns)g(a)h
(list)f(of)h(the)f(names)h(in)g(directory)g Fo(name)12
b Fp(.)1478 4780 y Fc(9.6.2)225 b(W)-19 b(orking)74 b(directory)1511
5103 y Fg(\017)83 b Fl(\(working-directory\))j Fg(!)d
Fo(os-string)1511 5302 y Fg(\017)g Fl(\(set-working-directory!)k
Fo(os-string-thing)15 b Fl(\))1478 5659 y Fp(These)55
b(return)h(and)g(set)f(the)g(w)-5 b(orking)55 b(directory)-14
b(.)1478 6227 y Fc(9.6.3)225 b(File)75 b(creation)f(and)g(remo)-6
b(v)-12 b(al)1511 6550 y Fg(\017)83 b Fl(\(open-file)i
Fo(p)-8 b(ath)82 b(\014le-options)14 b Fl(\))84 b Fg(!)f
Fo(p)-8 b(ort)1511 6749 y Fg(\017)83 b Fl(\(open-file)i
Fo(p)-8 b(ath)82 b(\014le-options)j(\014le-mo)-8 b(de)12
b Fl(\))84 b Fg(!)f Fo(p)-8 b(ort)1478 7106 y Fl(Open-file)38
b Fp(op)5 b(ens)38 b(a)e(p)5 b(ort)37 b(to)f(the)h(\014le)g(named)h(b)
-5 b(y)39 b Fo(p)-8 b(ath)13 b Fp(,)40 b(whic)-5 b(h)37
b(m)-5 b(ust)38 b(b)5 b(e)37 b(a)g Fo(os-string-thing)1478
7306 y Fp(argumen)-5 b(t.)70 b(The)42 b Fo(\014le-options)58
b Fp(argumen)-5 b(t)43 b(determines)g(v)-9 b(arious)43
b(asp)5 b(ects)42 b(of)g(the)g(returned)1478 7505 y(p)5
b(ort.)71 b(The)50 b(optional)g Fo(\014le-mo)-8 b(de)63
b Fp(argumen)-5 b(t)51 b(is)f(used)g(only)g(if)g(the)f(\014le)h(to)f(b)
5 b(e)49 b(op)5 b(ened)50 b(do)5 b(es)1478 7704 y(not)69
b(already)g(exist.)115 b(The)69 b(returned)g(p)5 b(ort)69
b(is)h(an)g(input)f(p)5 b(ort)69 b(if)82 b Fo(\014le-options)i
Fp(includes)1478 7903 y Fl(read-only)p Fp(;)65 b(otherwise)60
b(it)g(returns)h(an)g(output)g(p)5 b(ort.)88 b Fl(Dup-switching-mode)64
b Fp(can)d(b)5 b(e)1478 8103 y(used)41 b(to)g(op)5 b(en)41
b(an)g(input)g(p)5 b(ort)41 b(for)f(output)h(p)5 b(orts)41
b(op)5 b(ened)41 b(with)g(the)f Fl(read/write)j Fp(option.)1511
8460 y Fg(\017)83 b Fl(\(file-options)i Fo(\014le-option-name)98
b Fl(...\))56 b Fg(!)g Fo(\014le-options)1148 b Fp(syn)-5
b(tax)1511 8659 y Fg(\017)83 b Fl(\(file-options-on?)103
b Fo(\014le-options)84 b(\014le-options)14 b Fl(\))85
b Fg(!)e Fo(b)-8 b(o)g(ole)g(an)1511 8858 y Fg(\017)83
b Fl(\(file-options-union)j Fo(\014le-options)f(\014le-options)14
b Fl(\))84 b Fg(!)f Fo(\014le-options)1478 9215 y Fp(The)59
b(syn)-5 b(tax)60 b Fl(file-options)i Fp(returns)e(a)f(\014le-option)i
(with)e(the)g(indicated)h(options)g(set.)1478 9415 y
Fl(File-options-on?)76 b Fp(returns)56 b(true)e(if)h(its)g(\014rst)g
(argumen)-5 b(t)56 b(includes)g(all)f(of)g(the)g(options)1478
9614 y(listed)62 b(in)g(the)g(second)g(argumen)-5 b(t.)95
b Fl(File-options-union)65 b Fp(returns)d(a)g(\014le-options)h(ar-)1478
9813 y(gumen)-5 b(t)76 b(con)-5 b(taining)77 b(exactly)d(all)i(of)f
(the)h(options)g(listed)g(in)g(either)g(argumen)-5 b(t.)135
b(The)1478 10012 y(follo)-5 b(wing)56 b(\014le)f(options)h(ma)-5
b(y)56 b(b)5 b(e)55 b(used)h(with)g Fl(open-file)p Fp(.)4218
10511 y(112)p eop end
%%Page: 113 121
TeXDict begin 113 120 bop 981 1020 a Fl(create)1246 b
Fp(create)74 b(\014le)h(if)f(it)h(do)5 b(es)75 b(not)f(already)h
(exist;)84 b(a)75 b(\014le-)2749 1219 y(mo)5 b(de)56
b(argumen)-5 b(t)56 b(is)g(required)f(with)g(this)h(option)981
1418 y Fl(exclusive)985 b Fp(an)41 b(error)f(will)g(b)5
b(e)40 b(raised)h(if)f(this)g(option)h(and)f Fl(create)2749
1617 y Fp(are)55 b(b)5 b(oth)55 b(set)h(and)g(the)f(\014le)g(already)g
(exists)981 1817 y Fl(no-controlling-tty)202 b Fp(if)76
b Fo(p)-8 b(ath)74 b Fp(is)64 b(a)e(terminal)h(device)f(this)h(option)g
(causes)2749 2016 y(the)47 b(terminal)h(to)f(not)h(b)5
b(ecome)47 b(the)g(con)-5 b(trolling)48 b(ter-)2749 2215
y(minal)56 b(of)g(the)f(pro)5 b(cess)981 2414 y Fl(truncate)1072
b Fp(\014le)56 b(is)g(truncated)981 2614 y Fl(append)1246
b Fp(writes)56 b(are)f(app)5 b(ended)56 b(to)e(existing)i(con)-5
b(ten)g(ts)981 2813 y Fl(nonblocking)811 b Fp(read)56
b(and)g(write)e(op)5 b(erations)56 b(do)f(not)h(blo)5
b(c)-5 b(k)981 3012 y Fl(read-only)985 b Fp(p)5 b(ort)55
b(ma)-5 b(y)56 b(not)f(b)5 b(e)55 b(written)981 3211
y Fl(read-write)898 b Fp(\014le)56 b(descriptor)f(ma)-5
b(y)56 b(b)5 b(e)55 b(read)h(or)f(written)981 3411 y
Fl(write-only)898 b Fp(p)5 b(ort)55 b(ma)-5 b(y)56 b(not)f(b)5
b(e)55 b(read)581 3772 y(Only)i(one)g(of)g(the)f(last)h(three)f
(options)i(ma)-5 b(y)57 b(b)5 b(e)56 b(used.)79 b(If)70
b Fl(read-write)58 b Fp(is)g(sp)5 b(eci\014ed,)57 b(an)581
3971 y(output)e(p)5 b(ort)55 b(is)h(returned.)830 4172
y(F)-14 b(or)56 b(example)581 4507 y Fl(\(open-file)89
b("some-file.txt")1540 4707 y(\(file-options)g(create)g(write-only\))
1540 4906 y(\(file-mode)g(read)f(owner-write\)\))581
5241 y Fp(returns)61 b(an)f(output)g(p)5 b(ort)59 b(that)g(writes)h(to)
g(a)g(newly-created)f(\014le)h(that)g(can)g(b)5 b(e)59
b(read)h(b)-5 b(y)581 5440 y(an)g(y)g(one)56 b(and)g(written)f(only)g
(b)-5 b(y)56 b(the)f(o)-5 b(wner.)74 b(Once)55 b(the)g(\014le)h
(exists,)581 5776 y Fl(\(open-file)89 b("some-file.txt")1540
5975 y(\(file-options)g(append)g(write-only\)\))581 6310
y Fp(will)56 b(op)5 b(en)55 b(an)h(output)f(p)5 b(ort)55
b(that)g(app)5 b(ends)56 b(to)f(the)g(\014le.)830 6510
y(The)46 b Fl(append)i Fp(and)e Fl(nonblocking)i Fp(options)f(and)g
(the)f(read/write)f(nature)h(of)g(the)g(p)5 b(ort)581
6710 y(can)48 b(b)5 b(e)47 b(read)h(using)k Fl(i/o-flags)p
Fp(.)72 b(The)48 b Fl(append)h Fp(and)f Fl(nonblocking)i
Fp(options)f(can)e(b)5 b(e)48 b(set)581 6909 y(using)59
b Fl(set-i/o-flags!)p Fp(.)830 7109 y(T)-14 b(o)54 b(k)-5
b(eep)54 b(p)5 b(ort)53 b(op)5 b(erations)55 b(from)f(blo)5
b(c)-5 b(king)54 b(the)f(Sc)-5 b(heme)55 b(48)f(pro)5
b(cess,)55 b(output)f(p)5 b(orts)581 7308 y(are)45 b(set)f(to)h(b)5
b(e)44 b(non)-5 b(blo)5 b(c)-5 b(king)46 b(at)f(the)f(time)h(of)f
(creation)h(\(input)g(p)5 b(orts)44 b(are)h(managed)h(using)581
7508 y Fl(select\(\))p Fp(\).)116 b(Y)-14 b(ou)70 b(can)f(use)g
Fl(set-i/o-flags!)118 b Fp(to)69 b(mak)-5 b(e)69 b(an)h(output)f(p)5
b(ort)68 b(blo)5 b(c)-5 b(king,)581 7707 y(for)68 b(example)f(just)h(b)
5 b(efore)67 b(a)h(fork,)i(but)e(care)f(should)i(b)5
b(e)68 b(exercised.)111 b(The)67 b(Sc)-5 b(heme)69 b(48)581
7906 y(run)-5 b(time)56 b(co)5 b(de)55 b(ma)-5 b(y)56
b(get)f(confused)h(if)f(an)g(I/O)h(op)5 b(eration)55
b(blo)5 b(c)-5 b(ks.)614 8208 y Fg(\017)83 b Fl
(\(set-file-creation-mask!)88 b Fo(\014le-mo)-8 b(de)12
b Fl(\))581 8510 y Fp(Sets)59 b(the)g(\014le)g(creation)f(mask)i(to)e
(b)5 b(e)59 b Fo(\014le-mo)-8 b(de)12 b Fp(.)86 b(Bits)58
b(set)h(in)g Fo(\014le-mo)-8 b(de)73 b Fp(are)59 b(cleared)f(in)581
8709 y(the)d(mo)5 b(des)56 b(of)f(an)-5 b(y)56 b(\014les)g(or)f
(directories)h(created)e(b)-5 b(y)56 b(the)f(curren)-5
b(t)55 b(pro)5 b(cess.)614 9011 y Fg(\017)83 b Fl(\(link)h
Fo(existing)g(new)18 b Fl(\))581 9312 y Fp(Both)68 b
Fo(existing)85 b Fp(and)69 b Fo(new)87 b Fp(m)-5 b(ust)70
b(b)5 b(e)68 b Fo(os-string-thing)86 b Fp(argumen)-5
b(ts.)115 b Fl(Link)69 b Fp(mak)-5 b(es)70 b(path)581
9511 y Fo(new)75 b Fp(b)5 b(e)56 b(a)h(new)f(link)h(to)f(the)g(\014le)g
(p)5 b(oin)-5 b(ted)57 b(to)f(b)-5 b(y)56 b(path)h Fo(existing)15
b Fp(.)78 b(The)56 b(t)-5 b(w)g(o)57 b(paths)g(m)-5 b(ust)581
9711 y(b)5 b(e)55 b(in)h(the)f(same)h(\014le)f(system.)614
10012 y Fg(\017)83 b Fl(\(make-directory)j Fo(p)-8 b(ath)82
b(\014le-mo)-8 b(de)12 b Fl(\))3321 10511 y Fp(113)p
eop end
%%Page: 114 122
TeXDict begin 114 121 bop 1511 1046 a Fg(\017)83 b Fl(\(make-fifo)i
Fo(p)-8 b(ath)82 b(\014le-mo)-8 b(de)12 b Fl(\))1478
1380 y Fp(These)65 b(t)-5 b(w)g(o)66 b(pro)5 b(cedures)65
b(mak)-5 b(e)66 b(new)f(directories)g(and)h(\014fo)f(\014les.)104
b(In)65 b(b)5 b(oth)65 b(cases,)j Fo(p)-8 b(ath)1478
1579 y Fp(m)j(ust)56 b(b)5 b(e)55 b(a)h Fo(os-string-thing)72
b Fp(argumen)-5 b(t.)1511 1913 y Fg(\017)83 b Fl(\(unlink)h
Fo(p)-8 b(ath)13 b Fl(\))1511 2113 y Fg(\017)83 b Fl
(\(remove-directory)j Fo(p)-8 b(ath)13 b Fl(\))1511 2312
y Fg(\017)83 b Fl(\(rename)h Fo(old-p)-8 b(ath)83 b(new-p)-8
b(ath)13 b Fl(\))1478 2646 y Fo(Path)f Fp(,)80 b Fo(old-p)-8
b(ath)88 b Fp(and)76 b Fo(new-p)-8 b(ath)89 b Fp(m)-5
b(ust)76 b(all)g(b)5 b(e)75 b Fo(os-string-thing)91 b
Fp(argumen)-5 b(ts.)135 b Fl(Unlink)1478 2845 y Fp(remo)-5
b(v)g(es)62 b(the)e(link)h(indicated)h(b)-5 b(y)63 b
Fo(p)-8 b(ath)13 b Fp(.)90 b Fl(Remove-directory)64 b
Fp(remo)-5 b(v)g(es)62 b(the)e(indicated)1478 3045 y(\(empt)-5
b(y\))51 b(directory)-14 b(.)73 b Fl(Rename)53 b Fp(mo)-5
b(v)g(es)54 b(the)e(\014le)g(p)5 b(oin)-5 b(ted)53 b(to)f(b)-5
b(y)55 b Fo(old-p)-8 b(ath)65 b Fp(to)52 b(the)g(lo)5
b(cation)1478 3244 y(p)g(oin)-5 b(ted)61 b(to)f(b)-5
b(y)64 b Fo(new-p)-8 b(ath)74 b Fp(\(the)60 b(t)-5 b(w)g(o)61
b(paths)g(m)-5 b(ust)62 b(b)5 b(e)60 b(in)i(the)e(same)h(\014le)g
(system\).)91 b(An)-5 b(y)1478 3443 y(other)55 b(links)h(to)f(the)g
(\014le)g(remain)h(unc)-5 b(hanged.)1511 3777 y Fg(\017)83
b Fl(\(accessible?)102 b Fo(p)-8 b(ath)82 b(ac)-8 b(c)g(ess-mo)g(de)83
b(.)100 b(mor)-8 b(e-mo)g(des)14 b Fl(\))82 b Fg(!)h
Fo(b)-8 b(o)g(ole)g(an)1511 3976 y Fg(\017)83 b Fl(\(access-mode)i
Fo(mo)-8 b(de-name)12 b Fl(\))56 b Fg(!)g Fo(ac)-8 b(c)g(ess-mo)g(de)
1858 b Fp(syn)-5 b(tax)1478 4310 y Fl(Accessible?)89
b Fp(returns)60 b(true)f(if)73 b Fo(p)-8 b(ath)72 b Fp(\(whic)-5
b(h)60 b(m)-5 b(ust)60 b(b)5 b(e)60 b(a)g Fo(os-string-thing)76
b Fp(argumen)-5 b(t\))1478 4510 y(is)75 b(a)f(\014le)g(that)g(can)g(b)5
b(e)74 b(accessed)h(in)g(the)f(listed)g(mo)5 b(de.)131
b(If)74 b(more)h(than)f(one)g(mo)5 b(de)75 b(is)1478
4709 y(sp)5 b(eci\014ed)57 b Fl(accessible?)81 b Fp(returns)57
b(true)g(if)g(all)g(of)g(the)g(sp)5 b(eci\014ed)57 b(mo)5
b(des)58 b(are)f(p)5 b(ermitted.)1478 4908 y(The)55 b
Fo(mo)-8 b(de-name)12 b Fp(s)57 b(are:)73 b Fl(read)p
Fp(,)57 b Fl(write)p Fp(,)f Fl(execute)p Fp(,)h Fl(exists)p
Fp(.)1478 5435 y Fc(9.6.4)225 b(File)75 b(information)1511
5752 y Fg(\017)83 b Fl(\(get-file-info)i Fo(p)-8 b(ath)13
b Fl(\))83 b Fg(!)g Fo(\014le-info)1511 5951 y Fg(\017)g
Fl(\(get-file/link-info)j Fo(name)12 b Fl(\))84 b Fg(!)f
Fo(\014le-info)1511 6150 y Fg(\017)g Fl(\(get-port-info)i
Fo(fd-p)-8 b(ort)16 b Fl(\))83 b Fg(!)g Fo(\014le-info)1478
6484 y Fl(Get-file-info)54 b Fp(and)e Fl(get-file/link-info)j
Fp(b)5 b(oth)52 b(return)g(a)g(\014le)g(info)g(record)g(for)g(the)1478
6684 y(\014le)g(named)h(b)-5 b(y)53 b Fo(p)-8 b(ath)12
b Fp(,)53 b(whic)-5 b(h)53 b(m)-5 b(ust)53 b(b)5 b(e)52
b(a)h Fo(os-string-thing)68 b Fp(argumen)-5 b(t.)74 b
Fl(Get-file-info)1478 6883 y Fp(follo)-5 b(ws)76 b(sym)-5
b(b)5 b(olic)75 b(links)h(while)f Fl(get-file/link-info)j
Fp(do)5 b(es)75 b(not.)133 b Fl(Get-port-info)1478 7082
y Fp(returns)46 b(a)h(\014le)f(info)g(record)h(for)f(the)f(\014le)i
(whic)-5 b(h)47 b Fo(p)-8 b(ort)61 b Fp(reads)47 b(from)f(or)h(writes)f
(to.)70 b(An)46 b(error)1478 7281 y(is)56 b(raised)g(if)68
b Fo(fd-p)-8 b(ort)71 b Fp(do)5 b(es)55 b(not)g(read)h(from)f(or)h
(write)f(to)f(a)i(\014le)f(descriptor.)1511 7615 y Fg(\017)83
b Fl(\(file-info?)102 b Fo(x)20 b Fl(\))83 b Fg(!)g Fo(b)-8
b(o)g(ole)g(an)1511 7815 y Fg(\017)83 b Fl(\(file-info-name)j
Fo(\014le-info)10 b Fl(\))85 b Fg(!)e Fo(os-string)1478
8149 y Fl(File-info?)108 b Fp(is)67 b(a)g(predicate)f(for)g
(\014le-info)h(records.)107 b Fl(File-info-name)69 b
Fp(is)e(the)f(name)1478 8348 y(whic)-5 b(h)37 b(w)-5
b(as)38 b(used)g(to)e(get)h Fl(file-info)p Fp(,)42 b(either)36
b(as)i(passed)g(to)e Fl(get-file-info)k Fp(or)d Fl(get-file/link-info)p
Fp(,)1478 8547 y(or)55 b(used)h(to)f(op)5 b(en)56 b(the)f(p)5
b(ort)54 b(passed)j(to)e Fl(get-port-info)p Fp(.)1511
8881 y Fg(\017)83 b Fl(\(file-info-type)j Fo(\014le-info)10
b Fl(\))85 b Fg(!)e Fo(\014le-typ)-8 b(e)1511 9081 y
Fg(\017)83 b Fl(\(file-type?)102 b Fo(x)20 b Fl(\))83
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1511 9280 y Fg(\017)83
b Fl(\(file-type-name)j Fo(\014le-typ)-8 b(e)12 b Fl(\))84
b Fg(!)g Fo(symb)-8 b(ol)1511 9479 y Fg(\017)83 b Fl(\(file-type)i
Fo(typ)-8 b(e)12 b Fl(\))55 b Fg(!)h Fo(\014le-typ)-8
b(e)2874 b Fp(syn)-5 b(tax)1478 9813 y Fl(File-info-type)47
b Fp(returns)f(the)f(t)-5 b(yp)5 b(e)45 b(of)g(the)g(\014le,)i(as)f(a)f
(\014le-t)-5 b(yp)5 b(e)45 b(ob)9 b(ject)45 b(File)h(t)-5
b(yp)5 b(es)45 b(ma)-5 b(y)1478 10012 y(b)5 b(e)55 b(compared)h(using)i
Fl(eq?)p Fp(.)75 b(The)55 b(v)-9 b(alid)55 b(\014le)h(t)-5
b(yp)5 b(es)55 b(are:)4218 10511 y(114)p eop end
%%Page: 115 123
TeXDict begin 115 122 bop 2748 1020 a Fl(regular)2748
1219 y(directory)2748 1418 y(character-device)2748 1617
y(block-device)2748 1817 y(fifo)2748 2016 y(symbolic-link)2748
2215 y(socket)2748 2414 y(other)581 2789 y(Symbolic-link)58
b Fp(and)e Fl(socket)g Fp(are)f(not)g(required)h(b)-5
b(y)55 b(POSIX.)614 3101 y Fg(\017)83 b Fl(\(file-info-device)j
Fo(\014le-info)10 b Fl(\))86 b Fg(!)d Fo(inte)-8 b(ger)614
3301 y Fg(\017)83 b Fl(\(file-info-inode)j Fo(\014le-info)10
b Fl(\))85 b Fg(!)f Fo(inte)-8 b(ger)581 3613 y Fp(The)55
b(device)g(and)h(ino)5 b(de)55 b(n)-5 b(um)g(b)5 b(ers)58
b(uniquely)d(determine)g(a)h(\014le.)614 3925 y Fg(\017)83
b Fl(\(file-info-link-count)k Fo(\014le-info)10 b Fl(\))85
b Fg(!)e Fo(inte)-8 b(ger)614 4124 y Fg(\017)83 b Fl(\(file-info-size)j
Fo(\014le-info)10 b Fl(\))85 b Fg(!)e Fo(inte)-8 b(ger)581
4436 y Fp(These)56 b(return)g(the)f(n)-5 b(um)g(b)5 b(er)57
b(of)f(links)g(to)f(a)h(\014le)g(and)g(the)f(\014le)h(size)g(in)g(b)-5
b(ytes.)75 b(The)56 b(size)g(is)581 4635 y(only)g(meaningful)g(for)f
(regular)h(\014les.)614 4947 y Fg(\017)83 b Fl(\(file-info-owner)j
Fo(\014le-info)10 b Fl(\))85 b Fg(!)f Fo(user-id)614
5146 y Fg(\017)f Fl(\(file-info-group)j Fo(\014le-info)10
b Fl(\))85 b Fg(!)f Fo(gr)-8 b(oup-id)614 5346 y Fg(\017)83
b Fl(\(file-info-mode)j Fo(\014le-info)10 b Fl(\))85
b Fg(!)e Fo(\014le-mo)-8 b(de)581 5658 y Fp(These)56
b(return)f(the)g(o)-5 b(wner,)56 b(group,)g(and)g(access)g(mo)5
b(de)55 b(of)g(a)g(\014le.)614 5969 y Fg(\017)83 b Fl
(\(file-info-last-access)k Fo(\014le-info)10 b Fl(\))86
b Fg(!)d Fo(time)614 6169 y Fg(\017)g Fl(\(file-info-last-modification)
88 b Fo(\014le-info)10 b Fl(\))86 b Fg(!)d Fo(time)614
6368 y Fg(\017)g Fl(\(file-info-last-info-change)88 b
Fo(\014le-info)10 b Fl(\))85 b Fg(!)e Fo(time)581 6680
y Fp(These)47 b(return)f(the)g(time)g(the)g(\014le)h(w)-5
b(as)47 b(last)f(read,)j(mo)5 b(di\014ed,)49 b(or)d(had)h(its)f(status)
h(mo)5 b(di\014ed)581 7168 y Fc(9.6.5)225 b(File)76 b(mo)6
b(des)581 7483 y Fp(A)55 b(\014le)h(mo)5 b(de)55 b(is)h(a)f(b)5
b(o)-5 b(xed)56 b(in)-5 b(teger)55 b(represen)-5 b(ting)56
b(a)f(\014le)h(protection)f(mask.)614 7794 y Fg(\017)83
b Fl(\(file-mode)i(permission-name)h(...\))56 b Fg(!)f
Fo(\014le-mo)-8 b(de)1439 b Fp(syn)-5 b(tax)614 7994
y Fg(\017)83 b Fl(\(file-mode?)102 b Fo(x)20 b Fl(\))84
b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)614 8193 y Fg(\017)83
b Fl(\(file-mode+)i Fo(\014le-mo)-8 b(de)84 b(.)25 b(.)g(.)g
Fl(\))103 b Fg(!)83 b Fo(\014le-mo)-8 b(de)614 8392 y
Fg(\017)83 b Fl(\(file-mode-)i Fo(\014le-mo)-8 b(de0)84
b(\014le-mo)-8 b(de1)23 b Fl(\))84 b Fg(!)f Fo(\014le-mo)-8
b(de)581 8704 y Fl(File-mode)55 b Fp(is)e(syn)-5 b(tax)53
b(for)g(creating)f(\014le)i(mo)5 b(des.)73 b(The)53 b(mo)5
b(de-names)54 b(are)f(listed)g(b)5 b(elo)-5 b(w.)581
8903 y Fl(File-mode?)129 b Fp(is)74 b(a)f(predicate)g(for)g(\014le)g
(mo)5 b(des.)128 b Fl(File-mode+)75 b Fp(returns)f(a)f(mo)5
b(de)73 b(that)581 9103 y(con)-5 b(tains)63 b(all)e(of)g(p)5
b(ermissions)64 b(of)d(its)h(argumen)-5 b(ts.)93 b Fl(File-mode-)63
b Fp(returns)f(a)g(mo)5 b(de)61 b(that)581 9302 y(has)56
b(all)g(of)f(the)g(p)5 b(ermissions)57 b(of)68 b Fo(\014le-mo)-8
b(de0)79 b Fp(that)55 b(are)g(not)g(in)h Fo(\014le-mo)-8
b(de1)23 b Fp(.)614 9614 y Fg(\017)83 b Fl(\(file-mode=?)102
b Fo(\014le-mo)-8 b(de0)84 b(\014le-mo)-8 b(de1)23 b
Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)614 9813 y Fg(\017)83
b Fl(\(file-mode<=?)103 b Fo(\014le-mo)-8 b(de0)84 b(\014le-mo)-8
b(de1)23 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614
10012 y Fg(\017)83 b Fl(\(file-mode>=?)103 b Fo(\014le-mo)-8
b(de0)84 b(\014le-mo)-8 b(de1)23 b Fl(\))83 b Fg(!)g
Fo(b)-8 b(o)g(ole)g(an)3321 10511 y Fp(115)p eop end
%%Page: 116 124
TeXDict begin 116 123 bop 1478 1046 a Fl(File-mode=?)70
b Fp(returns)40 b(true)f(if)g(the)g(t)-5 b(w)g(o)39 b(mo)5
b(des)40 b(are)f(exactly)f(the)h(same.)69 b Fl(File-mode<=?)1478
1245 y Fp(returns)37 b(true)g(if)49 b Fo(\014le-mo)-8
b(de0)61 b Fp(has)37 b(a)g(subset)h(of)f(the)f(p)5 b(ermissions)39
b(of)50 b Fo(\014le-mo)-8 b(de1)23 b Fp(.)68 b Fl(File-mode>=?)1478
1445 y Fp(is)56 b Fl(file-mode<=?)76 b Fp(with)55 b(the)g(argumen)-5
b(ts)56 b(rev)-5 b(ersed.)1511 1731 y Fg(\017)83 b Fl
(\(file-mode->integer)j Fo(\014le-mo)-8 b(de)12 b Fl(\))85
b Fg(!)e Fo(inte)-8 b(ger)1511 1930 y Fg(\017)83 b Fl
(\(integer->file-mode)j Fo(inte)-8 b(ger)18 b Fl(\))85
b Fg(!)e Fo(\014le-mo)-8 b(de)1478 2216 y Fl(Integer->file-mode)89
b Fp(and)d Fl(file-mode->integer)j Fp(translate)c(\014le)h(mo)5
b(des)86 b(to)g(and)1478 2415 y(from)c(the)f(classic)h(Unix)f(\014le)h
(mo)5 b(de)82 b(masks.)153 b(These)82 b(ma)-5 b(y)82
b(not)g(b)5 b(e)81 b(the)g(masks)i(used)1478 2615 y(b)-5
b(y)55 b(the)g(underlying)h(OS.)2147 2953 y(P)-5 b(ermission)57
b(name)200 b(Bit)55 b(mask)2147 3152 y Fl(set-uid)817
b(#o4000)336 b Fp(set)55 b(user)h(id)f(when)h(executing)2147
3352 y Fl(set-gid)817 b(#o2000)336 b Fp(set)55 b(group)h(id)f(when)h
(executing)2147 3551 y Fl(owner-read)556 b(#o0400)336
b Fp(read)55 b(b)-5 b(y)56 b(o)-5 b(wner)2147 3750 y
Fl(owner-write)469 b(#o0200)336 b Fp(write)54 b(b)-5
b(y)56 b(o)-5 b(wner)2147 3949 y Fl(owner-exec)556 b(#o0100)336
b Fp(execute)54 b(\(or)h(searc)-5 b(h\))55 b(b)-5 b(y)56
b(o)-5 b(wner)2147 4149 y Fl(group-read)556 b(#o0040)336
b Fp(read)55 b(b)-5 b(y)56 b(group)2147 4348 y Fl(group-write)469
b(#o0020)336 b Fp(write)54 b(b)-5 b(y)56 b(group)2147
4547 y Fl(group-exec)556 b(#o0010)336 b Fp(execute)54
b(\(or)h(searc)-5 b(h\))55 b(b)-5 b(y)56 b(group)2147
4746 y Fl(other-read)556 b(#o0004)336 b Fp(read)55 b(b)-5
b(y)56 b(others)2147 4946 y Fl(other-write)469 b(#o0002)336
b Fp(write)54 b(b)-5 b(y)56 b(others)2147 5145 y Fl(other-exec)556
b(#o0001)336 b Fp(execute)54 b(\(or)h(searc)-5 b(h\))55
b(b)-5 b(y)56 b(others)2424 5511 y(Names)f(for)g(sets)h(of)f(p)5
b(ermissions)2424 5710 y Fl(owner)200 b(#o0700)g Fp(read,)56
b(write,)f(and)h(execute)e(b)-5 b(y)55 b(o)-5 b(wner)2424
5909 y Fl(group)200 b(#o0070)g Fp(read,)56 b(write,)f(and)h(execute)e
(b)-5 b(y)55 b(group)2424 6109 y Fl(other)200 b(#o0007)g
Fp(read,)56 b(write,)f(and)h(execute)e(b)-5 b(y)55 b(others)2424
6308 y Fl(read)287 b(#o0444)200 b Fp(read)56 b(b)-5 b(y)55
b(an)-5 b(y)g(one)2424 6507 y Fl(write)200 b(#o0222)g
Fp(write)55 b(b)-5 b(y)56 b(an)-5 b(y)g(one)2424 6706
y Fl(exec)287 b(#o0111)200 b Fp(execute)54 b(b)-5 b(y)56
b(an)-5 b(y)g(one)2424 6906 y Fl(all)374 b(#o0777)200
b Fp(an)-5 b(ything)56 b(b)-5 b(y)56 b(an)-5 b(y)g(one)1478
7396 y Fi(9.7)269 b(Time)1478 7759 y Fp(These)55 b(pro)5
b(cedures)56 b(are)f(in)h(structures)g Fl(posix-time)h
Fp(and)f Fl(posix)p Fp(.)1511 8045 y Fg(\017)83 b Fl(\(make-time)i
Fo(inte)-8 b(ger)18 b Fl(\))84 b Fg(!)f Fo(time)1511
8245 y Fg(\017)g Fl(\(current-time\))i Fg(!)f Fo(time)1511
8444 y Fg(\017)f Fl(\(time?)101 b Fo(x)20 b Fl(\))83
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1511 8643 y Fg(\017)83
b Fl(\(time-seconds)i Fo(time)12 b Fl(\))84 b Fg(!)f
Fo(inte)-8 b(ger)1478 8929 y Fp(A)65 b Fl(time)h Fp(record)g(con)-5
b(tains)66 b(an)g(in)-5 b(teger)66 b(that)e(represen)-5
b(ts)67 b(time)e(as)h(the)g(n)-5 b(um)g(b)5 b(er)67 b(of)e(sec-)1478
9129 y(ond)j(since)h(the)f(Unix)g(ep)5 b(o)g(c)-5 b(h)68
b(\(00:00:00)g(GMT,)g(Jan)-5 b(uary)69 b(1,)j(1970\).)112
b Fl(Make-time)70 b Fp(and)1478 9328 y Fl(current-time)39
b Fp(return)e Fl(time)p Fp(s,)k(with)c Fl(make-time)p
Fp('s)i(using)f(its)f(argumen)-5 b(t)38 b(while)f Fl(current-time)p
Fp('s)1478 9527 y(has)g(the)g(curren)-5 b(t)37 b(time.)68
b Fl(Time?)g Fp(is)38 b(a)f(predicate)f(that)g(recognizes)h
Fl(time)p Fp(s)i(and)e Fl(time-seconds)1478 9726 y Fp(returns)56
b(the)f(n)-5 b(um)g(b)5 b(er)56 b(of)f(seconds)i Fo(time)68
b Fp(represen)-5 b(ts.)1511 10012 y Fg(\017)83 b Fl(\(time=?)101
b Fo(time)84 b(time)12 b Fl(\))83 b Fg(!)h Fo(b)-8 b(o)g(ole)g(an)4218
10511 y Fp(116)p eop end
%%Page: 117 125
TeXDict begin 117 124 bop 614 1046 a Fg(\017)83 b Fl(\(time<?)102
b Fo(time)83 b(time)12 b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)614
1245 y Fg(\017)83 b Fl(\(time<=?)102 b Fo(time)83 b(time)12
b Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)614 1445 y
Fg(\017)83 b Fl(\(time>?)102 b Fo(time)83 b(time)12 b
Fl(\))84 b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)614 1644 y Fg(\017)83
b Fl(\(time>=?)102 b Fo(time)83 b(time)12 b Fl(\))84
b Fg(!)f Fo(b)-8 b(o)g(ole)g(an)581 1934 y Fp(These)56
b(p)5 b(erform)55 b(v)-9 b(arious)56 b(comparison)g(op)5
b(erations)56 b(on)g(the)f Fl(time)p Fp(s.)614 2224 y
Fg(\017)83 b Fl(\(time->string)j Fo(time)12 b Fl(\))84
b Fg(!)f Fo(string)581 2514 y Fl(Time->string)58 b Fp(returns)d(a)h
(string)g(represen)-5 b(tation)55 b(of)68 b Fo(time)g
Fp(in)56 b(the)f(follo)-5 b(wing)56 b(form.)581 2838
y Fl("Wed)88 b(Jun)g(30)f(21:49:08)i(1993)581 3037 y(")581
3584 y Fi(9.8)270 b(I/O)581 3948 y Fp(These)56 b(pro)5
b(cedures)55 b(are)h(in)f(structures)h Fl(posix-i/o)h
Fp(and)f Fl(posix)p Fp(.)614 4238 y Fg(\017)83 b Fl(\(open-pipe\))i
Fg(!)e Fo(input-p)-8 b(ort)84 b(+)f(output-p)-8 b(ort)581
4528 y Fl(Open-pipe)65 b Fp(creates)d(a)h(new)g(pip)5
b(e)62 b(and)i(returns)f(the)f(t)-5 b(w)g(o)64 b(ends)f(as)g(an)h
(input)f(p)5 b(ort)62 b(and)581 4727 y(an)56 b(output)f(p)5
b(ort.)830 4926 y(A)42 b Fo(\014le)49 b(descriptor)43
b Fp(p)5 b(ort)42 b(\(or)g Fo(fd-p)-8 b(ort)16 b Fp(\))41
b(is)i(a)g(p)5 b(ort)42 b(that)g(reads)h(to)f(or)g(writes)h(from)g(an)f
(OS)581 5126 y(\014le)d(descriptor.)69 b(Fd-p)5 b(orts)40
b(are)f(returned)f(b)-5 b(y)42 b Fl(open-input-file)p
Fp(,)j Fl(open-output-file)p Fp(,)581 5325 y Fl(open-file)p
Fp(,)57 b Fl(open-pipe)p Fp(,)g(and)f(other)f(pro)5 b(cedures.)614
5615 y Fg(\017)83 b Fl(\(fd-port?)102 b Fo(p)-8 b(ort)16
b Fl(\))82 b Fg(!)h Fo(b)-8 b(o)g(ole)g(an)614 5814 y
Fg(\017)83 b Fl(\(port->fd)i Fo(p)-8 b(ort)16 b Fl(\))82
b Fg(!)h Fo(inte)-8 b(ger)85 b(or)d Fl(#f)581 6104 y(Fd-port?)k
Fp(returns)59 b(true)g(if)f(its)h(argumen)-5 b(t)60 b(is)f(an)g(fd-p)5
b(ort.)85 b Fl(Port->fd)60 b Fp(returns)f(the)g(\014le)581
6304 y(descriptor)d(asso)5 b(ciated)55 b(with)h(or)f
Fl(#f)h Fp(if)68 b Fo(p)-8 b(ort)70 b Fp(is)56 b(not)g(an)f(fd-p)5
b(ort.)614 6594 y Fg(\017)83 b Fl(\(remap-file-descriptors)k
Fo(fd-sp)-8 b(e)g(c)83 b(.)25 b(.)g(.)g Fl(\))581 6884
y(Remap-file-descriptors)69 b Fp(reassigns)e(\014le)e(descriptors)h(to)
f(p)5 b(orts.)103 b(The)65 b Fo(fd-sp)-8 b(e)g(cs)78
b Fp(in-)581 7083 y(dicate)d(whic)-5 b(h)77 b(p)5 b(ort)75
b(is)h(to)f(b)5 b(e)75 b(mapp)5 b(ed)76 b(to)g(eac)-5
b(h)75 b(\014le)h(descriptor:)115 b(the)75 b(\014rst)h(gets)g(\014le)
581 7282 y(descriptor)69 b Fl(0)p Fp(,)k(the)68 b(second)h(gets)g
Fl(1)p Fp(,)j(and)e(so)f(forth.)114 b(A)68 b Fo(fd-sp)-8
b(e)g(c)78 b Fp(is)69 b(either)f(a)h(p)5 b(ort)68 b(that)581
7482 y(reads)55 b(from)g(or)g(writes)g(to)f(a)h(\014le)g(descriptor,)g
(or)g Fl(#f)p Fp(,)g(with)g Fl(#f)g Fp(indicating)g(that)f(the)g(cor-)
581 7681 y(resp)5 b(onding)70 b(\014le)g(descriptor)g(is)f(not)g(used.)
117 b(An)-5 b(y)69 b(op)5 b(en)69 b(p)5 b(orts)69 b(not)g(listed)h(are)
f(mark)-5 b(ed)581 7880 y(`close-on-exec'.)75 b(The)55
b(same)h(p)5 b(ort)55 b(ma)-5 b(y)55 b(b)5 b(e)55 b(mo)-5
b(v)g(ed)57 b(to)e(m)-5 b(ultiple)56 b(new)f(\014le)h(descriptors.)830
8079 y(F)-14 b(or)56 b(example,)581 8403 y Fl(\(remap-file-descriptors)
91 b(\(current-output-port\))2673 8602 y(#f)2673 8801
y(\(current-input-port\)\))581 9125 y Fp(mo)-5 b(v)g(es)52
b(the)e(curren)-5 b(t)50 b(output)g(p)5 b(ort)50 b(to)g(\014le)h
(descriptor)f Fl(0)h Fp(and)g(the)f(curren)-5 b(t)50
b(input)h(p)5 b(ort)50 b(to)581 9324 y(\014le)56 b(descriptor)f
Fl(2)p Fp(.)614 9614 y Fg(\017)83 b Fl(\(dup)h Fo(fd-p)-8
b(ort)16 b Fl(\))83 b Fg(!)g Fo(fd-p)-8 b(ort)614 9813
y Fg(\017)83 b Fl(\(dup-switching-mode)k Fo(fd-p)-8 b(ort)16
b Fl(\))82 b Fg(!)h Fo(fd-p)-8 b(ort)614 10012 y Fg(\017)83
b Fl(\(dup2)h Fo(fd-p)-8 b(ort)83 b(\014le-descriptor)18
b Fl(\))85 b Fg(!)e Fo(fd-p)-8 b(ort)3321 10511 y Fp(117)p
eop end
%%Page: 118 126
TeXDict begin 118 125 bop 1478 1046 a Fp(These)66 b(c)-5
b(hange)66 b Fo(fd-p)-8 b(ort)16 b Fp('s)65 b(\014le)h(descriptor)g
(and)g(return)g(a)f(new)h(p)5 b(ort)65 b(that)g(uses)i
Fo(p)-8 b(orts)14 b Fp('s)1478 1245 y(old)54 b(\014le)f(descriptor.)74
b Fl(Dup)54 b Fp(uses)g(the)f(lo)-5 b(w)g(est)54 b(un)-5
b(used)55 b(\014le)f(descriptor)f(and)h Fl(dup2)g Fp(uses)h(the)1478
1445 y(one)43 b(pro)-5 b(vided.)71 b Fl(Dup-switching-mode)46
b Fp(is)e(the)f(same)h(as)g Fl(dup)g Fp(except)f(that)f(the)h(returned)
1478 1644 y(p)5 b(ort)51 b(is)h(an)g(input)g(p)5 b(ort)52
b(if)f(the)h(argumen)-5 b(t)52 b(w)-5 b(as)52 b(an)g(output)g(p)5
b(ort)51 b(and)h(vice)g(v)-5 b(ersa.)73 b(If)51 b(an)-5
b(y)1478 1843 y(existing)55 b(p)5 b(ort)55 b(uses)h(the)f(\014le)h
(descriptor)g(passed)g(to)f Fl(dup2)p Fp(,)h(that)f(p)5
b(ort)55 b(is)h(closed.)1511 2164 y Fg(\017)83 b Fl(\(close-all-but)i
Fo(p)-8 b(ort)83 b(.)25 b(.)g(.)g Fl(\))1478 2484 y(Close-all-but)55
b Fp(closes)g(all)e(\014le)h(descriptors)g(whose)g(asso)5
b(ciated)54 b(p)5 b(orts)53 b(are)h(not)f(passed)1478
2683 y(to)i(it)g(as)h(argumen)-5 b(ts.)1511 3004 y Fg(\017)83
b Fl(\(close-on-exec?)103 b Fo(p)-8 b(ort)16 b Fl(\))82
b Fg(!)h Fo(b)-8 b(o)g(ole)g(an)1511 3203 y Fg(\017)83
b Fl(\(set-close-on-exec?!)k Fo(p)-8 b(ort)82 b(b)-8
b(o)g(ole)g(an)13 b Fl(\))1478 3524 y(Close-on-exec?)123
b Fp(returns)72 b(true)f(if)84 b Fl(port)71 b Fp(will)h(b)5
b(e)71 b(closed)g(when)h(a)f(new)g(program)h(is)1478
3723 y(exec'ed.)h Fl(Set-close-on-exec?!)k Fp(sets)56
b Fl(port)p Fp('s)g(close-on-exec)g(\015ag.)1511 4044
y Fg(\017)83 b Fl(\(i/o-flags)i Fo(p)-8 b(ort)16 b Fl(\))82
b Fg(!)h Fo(\014le-options)1511 4243 y Fg(\017)g Fl(\(set-i/o-flags!)j
Fo(p)-8 b(ort)82 b(\014le-options)14 b Fl(\))1478 4563
y Fp(These)45 b(t)-5 b(w)g(o)45 b(pro)5 b(cedures)45
b(read)g(and)g(write)f(v)-9 b(arious)45 b(options)g(for)g
Fl(port)p Fp(.)71 b(The)44 b(options)i(that)1478 4763
y(can)37 b(b)5 b(e)36 b(read)h(are)g Fl(append)p Fp(,)42
b Fl(nonblocking)p Fp(,)g Fl(read-only)p Fp(,)h Fl(write-only)p
Fp(,)f(and)c Fl(read/write)p Fp(.)1478 4962 y(Only)55
b(the)g Fl(append)i Fp(and)f Fl(nonblocking)h Fp(can)e(b)5
b(e)55 b(written.)1511 5282 y Fg(\017)83 b Fl(\(port-is-a-terminal?)103
b Fo(p)-8 b(ort)16 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)1511
5482 y Fg(\017)83 b Fl(\(port-terminal-name)j Fo(p)-8
b(ort)16 b Fl(\))83 b Fg(!)g Fo(string)1478 5802 y Fl
(Port-is-a-terminal?)134 b Fp(returns)75 b(true)f(if)87
b Fo(p)-8 b(ort)89 b Fp(has)76 b(an)e(underlying)h(\014le)g(descriptor)
1478 6001 y(that)46 b(is)h(asso)5 b(ciated)47 b(with)g(a)g(terminal.)71
b(F)-14 b(or)47 b(suc)-5 b(h)48 b(p)5 b(orts)47 b Fl
(port-terminal-name)j Fp(returns)1478 6201 y(the)55 b(name)h(of)f(the)g
(terminal,)g(for)h(all)f(others)h(it)f(returns)g Fl(#f)p
Fp(.)1478 6788 y Fi(9.9)269 b(Regular)90 b(expressions)1478
7165 y Fp(The)c(pro)5 b(cedures)87 b(in)g(this)g(section)f(pro)-5
b(vide)87 b(access)g(to)f(POSIX)h(regular)f(expression)1478
7364 y(matc)-5 b(hing.)127 b(The)73 b(regular)g(expression)h(syn)-5
b(tax)72 b(and)i(seman)-5 b(tics)74 b(are)f(far)f(to)5
b(o)72 b(complex)1478 7564 y(to)53 b(b)5 b(e)53 b(describ)5
b(ed)54 b(here.)73 b(Due)53 b(to)g(limitations)h(in)g(the)f(underlying)
h(facilit)-5 b(y)-14 b(,)54 b(only)f(Latin-1)1478 7763
y(strings)d(are)g(guaran)-5 b(teed)50 b(to)f(w)-5 b(ork)50
b(here|on)g(some)g(platforms,)h(only)f(ASCI)5 b(I)49
b(ma)-5 b(y)50 b(func-)1478 7962 y(tion)65 b(correctly)-14
b(.)104 b(Moreo)-5 b(v)g(er,)69 b(b)5 b(ecause)65 b(the)g(C)h(in)-5
b(terface)65 b(uses)i(zero)e(b)-5 b(ytes)65 b(for)h(marking)1478
8161 y(the)61 b(ends)h(of)g(strings,)i(patterns)e(and)g(strings)h(that)
e(con)-5 b(tain)62 b(zero)f(b)-5 b(ytes)62 b(will)g(not)f(w)-5
b(ork)1478 8361 y(correctly)-14 b(.)1727 8567 y(These)55
b(pro)5 b(cedures)56 b(are)f(in)h(structures)g Fl(posix-regexps)h
Fp(and)f Fl(posix)p Fp(.)1727 8774 y(An)62 b(abstract)g(data)g(t)-5
b(yp)5 b(e)61 b(for)h(creating)f(POSIX)h(regular)h(expressions)g(is)g
(describ)5 b(ed)1478 8973 y(in)56 b(section)f(5.20.)1511
9293 y Fg(\017)83 b Fl(\(make-regexp)i Fo(string)f(.)100
b(r)-8 b(e)g(gexp-options)14 b Fl(\))83 b Fg(!)g Fo(r)-8
b(e)g(gexp)1511 9493 y Fg(\017)83 b Fl(\(regexp-option)i
Fo(option-name)12 b Fl(\))57 b Fg(!)f Fo(r)-8 b(e)g(gexp-option)1512
b Fp(syn)-5 b(tax)1478 9813 y Fl(Make-regexp)54 b Fp(mak)-5
b(es)54 b(a)f(new)f(regular)h(expression,)i(using)h Fo(string)68
b Fp(as)53 b(the)g(pattern.)72 b(The)1478 10012 y(p)5
b(ossible)56 b(option)g(names)g(are:)4218 10511 y(118)p
eop end
%%Page: 119 127
TeXDict begin 119 126 bop 1890 1020 a Fl(extended)462
b Fp(use)56 b(the)f(extended)g(patterns)1890 1219 y Fl(ignore-case)201
b Fp(ignore)56 b(case)f(when)h(matc)-5 b(hing)1890 1418
y Fl(submatches)288 b Fp(rep)5 b(ort)55 b(submatc)-5
b(hes)1890 1617 y Fl(newline)549 b Fp(treat)55 b(newlines)h(sp)5
b(ecially)830 1975 y(The)56 b(regular)g(expression)h(is)f(not)g
(compiled)h(un)-5 b(til)56 b(it)g(matc)-5 b(hed)56 b(against)h(a)f
(string,)g(so)581 2174 y(an)-5 b(y)56 b(errors)g(in)f(the)g(pattern)g
(string)h(will)g(not)f(b)5 b(e)55 b(rep)5 b(orted)54
b(un)-5 b(til)57 b(that)d(p)5 b(oin)-5 b(t.)614 2473
y Fg(\017)83 b Fl(\(regexp?)102 b Fo(x)20 b Fl(\))83
b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)581 2772 y Fp(This)56
b(is)g(a)g(predicate)f(for)g(regular)g(expressions.)614
3071 y Fg(\017)83 b Fl(\(regexp-match)j Fo(r)-8 b(e)g(gexp)83
b(string)h(start)f(submatches?)100 b(starts-line?)i(ends-line?)20
b Fl(\))1112 3270 y Fg(!)88 b Fo(b)-8 b(o)g(ole)g(an)59
b(or)g(list)h(of)f(matches)614 3469 y Fg(\017)83 b Fl(\(match?)102
b Fo(x)20 b Fl(\))83 b Fg(!)g Fo(b)-8 b(o)g(ole)g(an)614
3669 y Fg(\017)83 b Fl(\(match-start)i Fo(match)13 b
Fl(\))83 b Fg(!)h Fo(inte)-8 b(ger)614 3868 y Fg(\017)83
b Fl(\(match-end)i Fo(match)13 b Fl(\))83 b Fg(!)g Fo(inte)-8
b(ger)581 4167 y Fl(Regexp-match)60 b Fp(matc)-5 b(hes)58
b(the)e(regular)i(expression)g(against)g(the)f(c)-5 b(haracters)57
b(in)h Fo(string)15 b Fp(,)581 4366 y(starting)60 b(at)g(p)5
b(osition)61 b Fo(start)16 b Fp(.)88 b(If)60 b(the)g(string)g(do)5
b(es)61 b(not)f(matc)-5 b(h)60 b(the)g(regular)h(expression,)581
4565 y Fl(regexp-match)50 b Fp(returns)e Fl(#f)p Fp(.)72
b(If)47 b(the)h(string)g(do)5 b(es)48 b(matc)-5 b(h,)49
b(then)f(a)g(list)g(of)f(matc)-5 b(h)48 b(records)581
4765 y(is)66 b(returned)f(if)77 b Fo(submatches?)124
b Fp(is)65 b(true,)j(or)d Fl(#t)g Fp(is)g(returned)g(if)g(it)g(is)g
(not.)103 b(Eac)-5 b(h)65 b(matc)-5 b(h)581 4964 y(record)66
b(con)-5 b(tains)67 b(the)f(index)g(of)g(the)g(c)-5 b(haracter)66
b(at)f(the)h(b)5 b(eginning)67 b(of)f(the)g(matc)-5 b(h)66
b(and)581 5163 y(one)h(more)g(than)f(the)h(index)f(of)h(the)f(c)-5
b(haracter)66 b(at)h(the)f(end.)108 b(The)67 b(\014rst)g(matc)-5
b(h)67 b(record)581 5362 y(giv)-5 b(es)50 b(the)e(lo)5
b(cation)49 b(of)g(the)g(substring)h(that)f(matc)-5 b(hed)50
b Fo(r)-8 b(e)g(gexp)10 b Fp(.)72 b(If)49 b(the)f(pattern)h(in)h
Fo(r)-8 b(e)g(gexp)581 5562 y Fp(con)j(tained)68 b(submatc)-5
b(hes,)71 b(then)c(the)g(results)g(of)g(these)g(are)g(returned)f(in)i
(order,)i(with)d(a)581 5761 y(matc)-5 b(h)71 b(records)h(rep)5
b(orting)70 b(submatc)-5 b(hes)72 b(that)f(succeeded)g(and)g
Fl(#f)g Fp(in)g(place)g(of)g(those)581 5960 y(that)55
b(did)h(not.)830 6159 y Fo(Starts-line?)132 b Fp(should)68
b(b)5 b(e)67 b(true)g(if)80 b Fo(string)i Fp(starts)67
b(at)g(the)g(b)5 b(eginning)68 b(of)f(a)g(line)g(and)581
6359 y Fo(ends-line?)96 b Fp(should)57 b(b)5 b(e)55 b(true)g(if)g(it)g
(ends)h(one.)581 6908 y Fi(9.10)270 b(C)90 b(to)g(Sc)-7
b(heme)89 b(corresp)7 b(ondence)581 7271 y Fp(The)65
b(follo)-5 b(wing)65 b(table)f(lists)h(the)f(Sc)-5 b(heme)65
b(pro)5 b(cedures)65 b(that)f(corresp)5 b(ond)64 b(to)g(particular)581
7471 y(C)f(pro)5 b(cedures.)97 b(Not)62 b(all)h(of)f(the)h(Sc)-5
b(heme)63 b(pro)5 b(cedures)63 b(listed)g(are)g(part)g(of)f(the)h
(POSIX)581 7670 y(in)-5 b(terface.)915 8009 y(C)55 b(pro)5
b(cedure)683 b(Sc)-5 b(heme)56 b(pro)5 b(cedure\(s\))915
8208 y Fl(access)1052 b(accessible?)915 8407 y(chdir)1139
b(set-working-directory!)915 8606 y(close)g(close-input-port,)90
b(close-output-port,)2663 8806 y(close-channel,)g(close-socket)915
9005 y(closedir)878 b(close-directory-stream)915 9204
y(creat)1139 b(open-file)915 9403 y(ctime)g(time->string)915
9603 y(dup)1313 b(dup,)88 b(dup-switching-mode)915 9802
y(dup2)1226 b(dup2)915 10001 y(exec[l|v][e|p|)p Fd(\017)p
Fl(])202 b(exec,)88 b(exec-with-environment,)3321 10511
y Fp(119)p eop end
%%Page: 120 128
TeXDict begin 120 127 bop 1811 1046 a Fp(C)56 b(pro)5
b(cedure)683 b(Sc)-5 b(heme)56 b(pro)5 b(cedure\(s\))3560
1245 y Fl(exec-file,)89 b(exec-file-with-environment,)3560
1445 y(exec-with-alias)p 1822 1644 53 7 v 1874 1644 a(exit)1164
b(exit)1811 1843 y(fcntl)1140 b(io-flags,)88 b(set-io-flags!,)3560
2042 y(close-on-exec,)i(set-close-on-exec!)1811 2242
y(fork)1227 b(fork,)88 b(fork-and-forget)1811 2441 y(fstat)1140
b(get-port-info)1811 2640 y(getcwd)1053 b(working-directory)1811
2839 y(getegid)966 b(get-effective-group-id)1811 3039
y(getenv)1053 b(lookup-environment-variable,)3560 3238
y(environment-alist)1811 3437 y(geteuid)966 b(get-effective-user-id)
1811 3636 y(getgid)1053 b(get-group-id)1811 3836 y(getgroups)792
b(get-groups)1811 4035 y(getlogin)879 b(get-login-name)1811
4234 y(getpid)1053 b(get-process-id)1811 4433 y(getppid)966
b(get-parent-process-id)1811 4633 y(getuid)1053 b(get-user-id)1811
4832 y(isatty)g(port-is-a-terminal?)1811 5031 y(link)1227
b(link)1811 5230 y(lstat)1140 b(get-file/link-info)1811
5430 y(mkdir)g(make-directory)1811 5629 y(mkfifo)1053
b(make-fifo)1811 5828 y(open)1227 b(open-file)1811 6027
y(opendir)966 b(open-directory-stream)1811 6227 y(pipe)1227
b(open-pipe)1811 6426 y(read)g(read-char,)89 b(read-block)1811
6625 y(readdir)966 b(read-directory-stream)1811 6824
y(rename)1053 b(rename)1811 7024 y(rmdir)1140 b(remove-directory)1811
7223 y(setgid)1053 b(set-group-id!)1811 7422 y(setuid)g(set-user-id!)
1811 7621 y(stat)1227 b(get-file-info)1811 7821 y(time)g(current-time)
1811 8020 y(ttyname)966 b(port-terminal-name)1811 8219
y(umask)1140 b(set-file-creation-mask!)1811 8418 y(uname)g(os-name,)88
b(os-node-name,)3560 8618 y(os-release-name,)i(os-version-name,)3560
8817 y(machine-name)1811 9016 y(unlink)1053 b(unlink)1811
9215 y(waitpid)966 b(wait-for-child-process)1811 9415
y(write)1140 b(write-char,)89 b(write-block)4218 10511
y Fp(120)p eop end
%%Page: 121 129
TeXDict begin 121 128 bop 581 2380 a Fn(Bibliograph)-13
b(y)664 3272 y Fp([1])83 b(Information)68 b(tec)-5 b(hnology)68
b({)f(P)-5 b(ortable)68 b(Op)5 b(erating)67 b(System)h(In)-5
b(terface)67 b(\(POSIX\).)922 3471 y(ISO/IEC)56 b(9945-1)g(ANSI/IEEE)e
(Std)i(1003.1.)74 b(2nd)56 b(Ed.,)g(1996.)664 3826 y([2])83
b(William)f(Clinger)g(and)g(Jonathan)g(Rees.)152 b(Macros)82
b(that)e(w)-5 b(ork.)152 b Fo(Principles)84 b(of)922
4025 y(Pr)-8 b(o)g(gr)g(amming)58 b(L)-8 b(anguages)p
Fp(,)57 b(Jan)-5 b(uary)56 b(1991.)664 4381 y([3])83
b(William)64 b(Clinger)g(and)f(Jonathan)h(Rees)g(\(editors\).)96
b(Revised)4943 4320 y Fj(4)5081 4381 y Fp(rep)5 b(ort)63
b(on)g(the)g(al-)922 4580 y(gorithmic)78 b(language)g(Sc)-5
b(heme.)140 b Fo(LISP)80 b(Pointers)d Fp(IV\(3\):1{55,)82
b(July-Septem)-5 b(b)5 b(er)922 4779 y(1991.)664 5134
y([4])83 b(P)-5 b(a)g(v)g(el)56 b(Curtis)f(and)h(James)f(Rauen.)74
b(A)54 b(mo)5 b(dule)55 b(system)g(for)g(Sc)-5 b(heme.)73
b Fo(A)l(CM)59 b(Con-)922 5334 y(fer)-8 b(enc)g(e)61
b(on)e(Lisp)h(and)f(F)-13 b(unctional)62 b(Pr)-8 b(o)g(gr)g(amming,)53
b Fp(pages)j(13{19,)g(1990.)664 5689 y([5])83 b(Ric)-5
b(hard)58 b(Kelsey)f(and)g(Jonathan)h(Rees.)78 b(A)56
b(T)-14 b(ractable)56 b(Sc)-5 b(heme)58 b(Implemen)-5
b(tation.)922 5888 y Fo(Lisp)60 b(and)f(Symb)-8 b(olic)60
b(Computation)55 b Fp(7:315{335)h(1994.)664 6244 y([6])83
b(Ric)-5 b(hard)48 b(Kelsey)-14 b(,)49 b(Will)d(Clinger,)j(Jonathan)e
(Rees)g(\(editors\).)58 b(Revised)5461 6183 y Fj(5)5582
6244 y Fp(Rep)5 b(ort)46 b(on)922 6443 y(the)58 b(Algorithmic)h
(Language)f(Sc)-5 b(heme.)84 b Fo(Higher-Or)-8 b(der)63
b(and)f(Symb)-8 b(olic)63 b(Computa-)922 6642 y(tion,)g
Fp(V)-14 b(ol.)62 b(11,)g(No.)f(1,)i(Septem)-5 b(b)5
b(er,)63 b(1998.)92 b(and)61 b Fo(A)l(CM)k(SIGPLAN)h(Notic)-8
b(es)p Fp(,)64 b(V)-14 b(ol.)922 6841 y(33,)56 b(No.)f(9,)h(Octob)5
b(er,)54 b(1998.)664 7197 y([7])83 b(Da)-5 b(vid)67 b(MacQueen.)108
b(Mo)5 b(dules)68 b(for)e(Standard)i(ML.)107 b Fo(A)l(CM)70
b(Confer)-8 b(enc)g(e)71 b(on)f(Lisp)922 7396 y(and)60
b(F)-13 b(unctional)61 b(Pr)-8 b(o)g(gr)g(amming,)54
b Fp(1984.)664 7751 y([8])83 b(Jonathan)58 b(Rees)f(and)g(Bruce)f
(Donald.)78 b(Program)57 b(mobile)g(rob)5 b(ots)57 b(in)g(Sc)-5
b(heme.)78 b Fo(In-)922 7950 y(ternational)61 b(Confer)-8
b(enc)g(e)61 b(on)e(R)-8 b(ob)g(otics)59 b(and)h(A)l(utomation,)55
b Fp(IEEE,)h(1992.)664 8306 y([9])83 b(John)66 b(H.)e(Repp)-5
b(y)-14 b(.)101 b(Concurren)-5 b(t)64 b(Programming)i(in)f(ML.)100
b(Cam)-5 b(bridge)66 b(Univ)-5 b(ersit)g(y)922 8505 y(Press,)57
b(1999.)581 8860 y([10])83 b(Mark)63 b(A.)g(Sheldon)h(and)f(Da)-5
b(vid)64 b(K.)f(Gi\013ord.)97 b(Static)62 b(dep)5 b(enden)-5
b(t)63 b(t)-5 b(yp)5 b(es)63 b(for)g(\014rst-)922 9059
y(class)79 b(mo)5 b(dules.)139 b Fo(A)l(CM)80 b(Confer)-8
b(enc)g(e)80 b(on)g(Lisp)f(and)h(F)-13 b(unctional)81
b(Pr)-8 b(o)g(gr)g(amming,)922 9259 y Fp(pages)56 b(20{29,)g(1990.)581
9614 y([11])83 b(Olin)97 b(Shiv)-5 b(ers,)107 b(Brian)96
b(D.)g(Carlstrom,)106 b(Martin)97 b(Gasbic)-5 b(hler)97
b(and)f(Mik)-5 b(e)96 b(Sp)5 b(er-)922 9813 y(b)g(er.)214
b(Scsh)103 b(Reference)e(Man)-5 b(ual,)116 b(scsh)103
b(release)g(0.6.6.)214 b(Av)-9 b(ailable)101 b(at)h(URL)922
10012 y Fl(http://www.scsh.net/)p Fp(.)3321 10511 y(121)p
eop end
%%Page: 122 130
TeXDict begin 122 129 bop 1478 1046 a Fp([12])83 b(Olin)68
b(Shiv)-5 b(ers.)108 b(A)67 b(univ)-5 b(ersal)68 b(scripting)f(framew)
-5 b(ork,)70 b(or)d(Lam)-5 b(b)5 b(da:)97 b(the)66 b(ultimate)1819
1245 y(\\little)j(language".)115 b Fo(Concurr)-8 b(ency)73
b(and)g(Par)-8 b(al)8 b(lelism,)76 b(Pr)-8 b(o)g(gr)g(amming,)73
b(Network-)1819 1445 y(ing,)60 b(and)f(Se)-8 b(curity,)56
b Fp(pages)g(254{265,)g(Springer)g(1996.)73 b(Jo)-5 b(xan)56
b(Ja\013ar)g(and)f(Roland)1819 1644 y(H.)g(C.)h(Y)-14
b(ap,)55 b(editors.)4218 10511 y(122)p eop end
%%Page: 123 131
TeXDict begin 123 130 bop 581 1997 a Fn(Index)581 2827
y Fl(accessible?)p Fp(,)58 b(114)581 3028 y Fl
(add-signal-queue-signal!)p Fp(,)i(109)581 3228 y Fl(after-time-rv)p
Fp(,)e(89)581 3429 y Fl(always-rv)p Fp(,)f(86)581 3629
y Fl(any)p Fp(,)f(31)581 3829 y Fl(any-match?)p Fp(,)h(66)581
4030 y Fl(any?)p Fp(,)f(30)581 4230 y Fl(arithmetic-shift)p
Fp(,)i(32)581 4431 y Fl(array)p Fp(,)e(34)581 4631 y
Fl(array->vector)p Fp(,)i(34)581 4832 y Fl(array-ref)p
Fp(,)f(34)581 5032 y Fl(array-set!)p Fp(,)g(34)581 5232
y Fl(array-shape)p Fp(,)h(34)581 5433 y Fl(array?)p Fp(,)f(34)581
5633 y Fl(ascii-range)p Fp(,)h(64)581 5834 y Fl(ascii-ranges)p
Fp(,)g(64)581 6034 y Fl(at-real-time-rv)p Fp(,)g(89)581
6234 y Fl(atom?)p Fp(,)e(30)581 6435 y Fl(atomically!)p
Fp(,)i(82)581 6821 y Fl(bit-count)p Fp(,)f(32)581 7021
y Fl(bitwise-and)p Fp(,)h(32)581 7222 y Fl(bitwise-ior)p
Fp(,)g(32)581 7422 y Fl(bitwise-not)p Fp(,)g(32)581 7622
y Fl(bitwise-xor)p Fp(,)g(32)581 7823 y Fl(byte-vector)p
Fp(,)g(32)581 8023 y Fl(byte-vector->os-string)p Fp(,)h(44)581
8224 y Fl(byte-vector-length)p Fp(,)g(32)581 8424 y Fl(byte-vector-ref)
p Fp(,)f(32)581 8624 y Fl(byte-vector-set!)p Fp(,)g(32)581
8825 y Fl(byte-vector?)p Fp(,)g(32)581 9211 y Fl(call-atomically)p
Fp(,)g(82)581 9411 y Fl(call-atomically!)p Fp(,)g(82)581
9612 y Fl(call-ensuring-atomicity)p Fp(,)i(80)581 9812
y Fl(call-ensuring-atomicity!)p Fp(,)g(80)581 10012 y
Fl(call-imported-binding)p Fp(,)f(94)3528 2827 y Fl
(call-with-os-string-text-codec)p Fp(,)46 b(45)3528 3027
y Fl(cell-ref)p Fp(,)57 b(33)3528 3228 y Fl(cell-set!)p
Fp(,)g(33)3528 3428 y Fl(cell?)p Fp(,)g(33)3528 3628
y Fl(channel?)p Fp(,)g(87)3528 3828 y Fl(char->scalar-value)p
Fp(,)i(70)3528 4028 y Fl(char-foldcase)p Fp(,)f(73)3528
4228 y Fl(char-general-category)p Fp(,)i(72)3528 4428
y Fl(char-titlecase)p Fp(,)e(73)3528 4629 y Fl(char-titlecase?)p
Fp(,)g(73)3528 4829 y Fl(choose)p Fp(,)f(86)3528 5029
y Fl(close-all-but)p Fp(,)h(118)3528 5229 y Fl(close-directory-stream)p
Fp(,)i(112)3528 5429 y Fl(close-on-exec?)p Fp(,)e(118)3528
5629 y Fl(close-socket)p Fp(,)g(45)3528 5829 y Fl(compound-interface)p
Fp(,)h(22)3528 6029 y Fl(concatenate-symbol)p Fp(,)g(31)3528
6230 y Fl(condvar-has-value?)p Fp(,)g(83)3528 6430 y
Fl(condvar-value)p Fp(,)f(83)3528 6630 y Fl(condvar?)p
Fp(,)f(83)3528 6830 y Fl(copy-array)p Fp(,)h(34)3528
7030 y Fl(current-column)p Fp(,)g(42)3528 7230 y Fl
(current-os-string-text-codec)p Fp(,)j(45)3528 7430 y
Fl(current-proposal)p Fp(,)e(82)3528 7630 y Fl(current-row)p
Fp(,)f(42)3528 7831 y Fl(current-thread)p Fp(,)g(78)3528
8031 y Fl(current-time)p Fp(,)g(116)3528 8411 y Fl(debug-message)p
Fp(,)g(79)3528 8612 y Fl(default-hash-function)p Fp(,)i(41)3528
8812 y Fl(define-exported-binding)p Fp(,)g(92)3528 9012
y Fl(define-imported-binding)p Fp(,)g(93)3528 9212 y
Fl(define-interface)p Fp(,)f(21)3528 9412 y Fl(define-record-discloser)
p Fp(,)h(36,)55 b(37)3528 9612 y Fl(define-record-resumer)p
Fp(,)60 b(37,)55 b(101)3528 9812 y Fl(define-structure)p
Fp(,)k(19)3528 10012 y Fl(define-text-codec)p Fp(,)g(75)3321
10511 y(123)p eop end
%%Page: 124 132
TeXDict begin 124 131 bop 1478 1046 a Fl(delete)p Fp(,)56
b(31)1478 1246 y Fl(delete-from-queue!)p Fp(,)i(34)1478
1446 y Fl(delq)p Fp(,)e(31)1478 1646 y Fl(delq!)p Fp(,)g(31)1478
1847 y Fl(dequeue!)p Fp(,)h(33)1478 2047 y Fl(dequeue-signal!)p
Fp(,)h(109)1478 2247 y Fl(directory-stream?)p Fp(,)g(112)1478
2447 y Fl(dup)p Fp(,)e(117)1478 2647 y Fl(dup-switching-mode)p
Fp(,)i(117)1478 2847 y Fl(dup2)p Fp(,)e(117)1478 3228
y Fl(enqueue!)p Fp(,)h(33)1478 3428 y Fl(ensure-atomicity!)p
Fp(,)h(80)1478 3628 y Fl(enum-set->list)p Fp(,)g(40)1478
3828 y Fl(enum-set-intersection)p Fp(,)h(40)1478 4028
y Fl(enum-set-member?)p Fp(,)f(40)1478 4228 y Fl(enum-set-negation)p
Fp(,)g(40)1478 4429 y Fl(enum-set-union)p Fp(,)g(40)1478
4629 y Fl(enum-set=?)p Fp(,)f(40)1478 4829 y Fl(environment-alist)p
Fp(,)h(110)1478 5029 y Fl(every?)p Fp(,)e(30)1478 5229
y Fl(exact-match?)p Fp(,)h(66)1478 5429 y Fl(exec)p Fp(,)f(106)1478
5629 y Fl(exec-file)p Fp(,)h(106)1478 5829 y Fl
(exec-file-with-environment)p Fp(,)j(106)1478 6030 y
Fl(exec-with-alias)p Fp(,)e(106)1478 6230 y Fl(exec-with-environment)p
Fp(,)h(106)1478 6430 y Fl(exit)p Fp(,)d(106)1478 6810
y Fl(fd-port?)p Fp(,)h(117)1478 7011 y Fl(file-info-device)p
Fp(,)h(115)1478 7211 y Fl(file-info-group)p Fp(,)g(115)1478
7411 y Fl(file-info-inode)p Fp(,)g(115)1478 7611 y Fl
(file-info-last-access)p Fp(,)h(115)1478 7811 y Fl
(file-info-last-info-change)p Fp(,)h(115)1478 8011 y
Fl(file-info-last-modification)p Fp(,)g(115)1478 8211
y Fl(file-info-link-count)p Fp(,)f(115)1478 8411 y Fl(file-info-mode)p
Fp(,)f(115)1478 8612 y Fl(file-info-name)p Fp(,)g(114)1478
8812 y Fl(file-info-owner)p Fp(,)g(115)1478 9012 y Fl(file-info-size)p
Fp(,)g(115)1478 9212 y Fl(file-info-type)p Fp(,)g(114)1478
9412 y Fl(file-info?)p Fp(,)f(114)1478 9612 y Fl(file-mode+)p
Fp(,)g(115)1478 9812 y Fl(file-mode-)p Fp(,)g(115)1478
10012 y Fl(file-mode->integer)p Fp(,)h(116)4425 1046
y Fl(file-mode<=?)p Fp(,)g(115)4425 1249 y Fl(file-mode=?)p
Fp(,)f(115)4425 1453 y Fl(file-mode>=?)p Fp(,)h(115)4425
1656 y Fl(file-mode?)p Fp(,)f(115)4425 1859 y Fl(file-options-on?)p
Fp(,)h(112)4425 2062 y Fl(file-options-union)p Fp(,)h(112)4425
2266 y Fl(file-type-name)p Fp(,)f(114)4425 2469 y Fl(file-type?)p
Fp(,)f(114)4425 2672 y Fl(filter)p Fp(,)g(31)4425 2876
y Fl(filter!)p Fp(,)g(31)4425 3079 y Fl(filter-map)p
Fp(,)g(31)4425 3282 y Fl(find-text-codec)p Fp(,)h(74)4425
3485 y Fl(first)p Fp(,)e(31)4425 3689 y Fl(fluid)p Fp(,)g(43)4425
3892 y Fl(fork)p Fp(,)g(106)4425 4095 y Fl(fork-and-forget)p
Fp(,)i(106)4425 4299 y Fl(fresh-line)p Fp(,)f(42)4425
4735 y Fl(general-category-id)p Fp(,)i(72)4425 4938 y
Fl(general-category-primary-category)p Fp(,)5089 5138
y(72)4425 5341 y Fl(general-category?)p Fp(,)f(72)4425
5544 y Fl(get-effective-group-id)p Fp(,)h(110)4425 5748
y Fl(get-effective-user-id)p Fp(,)g(110)4425 5951 y Fl(get-file-info)p
Fp(,)f(114)4425 6154 y Fl(get-file/link-info)p Fp(,)h(114)4425
6357 y Fl(get-group-id)p Fp(,)f(110)4425 6561 y Fl(get-groups)p
Fp(,)f(110)4425 6764 y Fl(get-host-name)p Fp(,)h(45)4425
6967 y Fl(get-login-name)p Fp(,)g(110)4425 7171 y Fl
(get-parent-process-id)p Fp(,)h(110)4425 7374 y Fl(get-port-info)p
Fp(,)f(114)4425 7577 y Fl(get-process-id)p Fp(,)g(110)4425
7780 y Fl(get-user-id)p Fp(,)f(110)4425 7984 y Fl(group-id->group-info)
p Fp(,)i(111)4425 8187 y Fl(group-id->integer)p Fp(,)f(111)4425
8390 y Fl(group-id=?)p Fp(,)f(111)4425 8593 y Fl(group-id?)p
Fp(,)g(110)4425 8797 y Fl(group-info-id)p Fp(,)h(111)4425
9000 y Fl(group-info-members)p Fp(,)h(111)4425 9203 y
Fl(group-info-name)p Fp(,)f(111)4425 9407 y Fl(group-info?)p
Fp(,)f(111)4425 9610 y Fl(guard)p Fp(,)f(86)4425 9813
y Fl(guess-port-text-codec-according-to-bom)p Fp(,)5089
10012 y(74)4218 10511 y(124)p eop end
%%Page: 125 133
TeXDict begin 125 132 bop 581 1046 a Fl(have-system?)p
Fp(,)58 b(45)581 1405 y Fl(i/o-flags)p Fp(,)f(118)581
1604 y Fl(identity)p Fp(,)g(30)581 1803 y Fl(ignore-case)p
Fp(,)h(65)581 2002 y Fl(import-definition)p Fp(,)h(93)581
2202 y Fl(import-dynamic-externals)p Fp(,)h(95)581 2401
y Fl(import-lambda-definition)p Fp(,)g(94)581 2600 y
Fl(integer->file-mode)p Fp(,)f(116)581 2800 y Fl(integer->group-id)p
Fp(,)g(111)581 2999 y Fl(integer->process-id)p Fp(,)g(106)581
3198 y Fl(integer->signal)p Fp(,)f(107)581 3397 y Fl(integer->user-id)p
Fp(,)g(110)581 3597 y Fl(intersection)p Fp(,)g(64)581
3955 y Fl(jar-put!)p Fp(,)f(88)581 4154 y Fl(jar-take)p
Fp(,)g(88)581 4354 y Fl(jar-take-rv)p Fp(,)h(88)581 4553
y Fl(jar?)p Fp(,)e(88)581 4912 y Fl(kill-thread!)p Fp(,)i(79)581
5270 y Fl(latin-1-codec)p Fp(,)g(74)581 5469 y Fl(let-fluid)p
Fp(,)f(43)581 5669 y Fl(let-fluids)p Fp(,)g(43)581 5868
y Fl(limit-output)p Fp(,)h(42)581 6067 y Fl(link)p Fp(,)e(113)581
6267 y Fl(list->queue)p Fp(,)i(34)581 6466 y Fl
(list-delete-neighbor-dups)p Fp(,)i(57,)55 b(61)581 6665
y Fl(list-delete-neighbor-dups!)p Fp(,)60 b(61)581 6864
y Fl(list-directory)p Fp(,)e(112)581 7064 y Fl(list-merge)p
Fp(,)f(56,)f(59)581 7263 y Fl(list-merge!)p Fp(,)i(56,)d(59)581
7462 y Fl(list-merge-sort)p Fp(,)j(59)581 7661 y Fl(list-merge-sort!)p
Fp(,)g(59)581 7861 y Fl(list-sort)p Fp(,)f(56)581 8060
y Fl(list-sort!)p Fp(,)g(56)581 8259 y Fl(list-sorted?)p
Fp(,)h(56,)d(59)581 8458 y Fl(list-stable-sort)p Fp(,)j(56)581
8658 y Fl(list-stable-sort!)p Fp(,)h(56)581 8857 y Fl
(load-dynamic-externals)p Fp(,)g(95)581 9056 y Fl(lock?)p
Fp(,)d(84)581 9255 y Fl(lookup-environment-variable)p
Fp(,)k(110)581 9455 y Fl(lookup-exported-binding)p Fp(,)g(93)581
9654 y Fl(lookup-imported-binding)p Fp(,)g(93)581 10012
y Fl(machine-name)p Fp(,)e(111)3528 1046 y Fl(make-array)p
Fp(,)g(34)3528 1245 y Fl(make-byte-vector)p Fp(,)h(32)3528
1445 y Fl(make-cell)p Fp(,)e(33)3528 1644 y Fl(make-channel)p
Fp(,)h(87)3528 1843 y Fl(make-condvar)p Fp(,)g(83)3528
2042 y Fl(make-directory)p Fp(,)g(113)3528 2242 y Fl(make-fifo)p
Fp(,)f(114)3528 2441 y Fl(make-fluid)p Fp(,)h(43)3528
2640 y Fl(make-integer-table)p Fp(,)h(41)3528 2839 y
Fl(make-jar)p Fp(,)e(88)3528 3039 y Fl(make-lock)p Fp(,)g(84)3528
3238 y Fl(make-placeholder)p Fp(,)i(84,)c(87)3528 3437
y Fl(make-proposal)p Fp(,)j(82)3528 3636 y Fl(make-queue)p
Fp(,)g(33)3528 3836 y Fl(make-record)p Fp(,)g(36)3528
4035 y Fl(make-record-type)p Fp(,)h(37)3528 4234 y Fl(make-regexp)p
Fp(,)f(118)3528 4433 y Fl(make-shared-array)p Fp(,)h(35)3528
4633 y Fl(make-signal-queue)p Fp(,)g(109)3528 4832 y
Fl(make-sparse-vector)p Fp(,)g(33)3528 5031 y Fl
(make-string-input-port)p Fp(,)h(42)3528 5230 y Fl
(make-string-output-port)p Fp(,)g(42)3528 5430 y Fl(make-string-table)p
Fp(,)f(41)3528 5629 y Fl(make-symbol-table)p Fp(,)g(41)3528
5828 y Fl(make-table)p Fp(,)f(41)3528 6027 y Fl(make-table-immutable!)p
Fp(,)i(41)3528 6227 y Fl(make-table-maker)p Fp(,)f(41)3528
6426 y Fl(make-text-codec)p Fp(,)f(75)3528 6625 y Fl(make-time)p
Fp(,)f(116)3528 6824 y Fl(make-tracking-input-port)p
Fp(,)j(42)3528 7024 y Fl(make-tracking-output-port)p
Fp(,)g(42)3528 7223 y Fl(match)p Fp(,)d(66)3528 7422
y Fl(match-end)p Fp(,)g(66,)f(119)3528 7621 y Fl(match-start)p
Fp(,)i(66,)d(119)3528 7821 y Fl(match-submatches)p Fp(,)k(66)3528
8020 y Fl(match?)p Fp(,)e(119)3528 8219 y Fl(maybe-commit)p
Fp(,)h(82)3528 8418 y Fl(maybe-commit-and-block)p Fp(,)i(85)3528
8618 y Fl(maybe-commit-and-block-on-queue)p Fp(,)46 b(85)3528
8817 y Fl(maybe-commit-and-make-ready)p Fp(,)61 b(85)3528
9016 y Fl(maybe-commit-and-set-condvar!)p Fp(,)47 b(83)3528
9215 y Fl(maybe-commit-and-wait-for-condvar)p Fp(,)4193
9415 y(83)3528 9614 y Fl(maybe-dequeue-signal!)p Fp(,)60
b(109)3528 9813 y Fl(maybe-dequeue-thread!)p Fp(,)g(85)3528
10012 y Fl(maybe-obtain-lock)p Fp(,)f(84)3321 10511 y(125)p
eop end
%%Page: 126 134
TeXDict begin 126 133 bop 1478 1046 a Fl(memq?)p Fp(,)56
b(30)1478 1246 y Fl(modify)p Fp(,)g(20)1478 1631 y Fl(n=)p
Fp(,)g(30)1478 1831 y Fl(name->group-info)p Fp(,)i(111)1478
2032 y Fl(name->signal)p Fp(,)f(107)1478 2232 y Fl(name->user-info)p
Fp(,)h(111)1478 2432 y Fl(negate)p Fp(,)e(64)1478 2633
y Fl(neq?)p Fp(,)g(30)1478 2833 y Fl(never-rv)p Fp(,)h(86)1478
3033 y Fl(no-op)p Fp(,)f(30)1478 3234 y Fl(no-submatches)p
Fp(,)i(66)1478 3434 y Fl(null-list?)p Fp(,)f(30)1478
3634 y Fl(null-text-codec)p Fp(,)h(74)1478 4019 y Fl(obtain-lock)p
Fp(,)f(84)1478 4219 y Fl(one-of)p Fp(,)f(65)1478 4419
y Fl(open-directory-stream)p Fp(,)j(112)1478 4620 y Fl(open-file)p
Fp(,)e(112)1478 4820 y Fl(open-pipe)p Fp(,)g(117)1478
5020 y Fl(open-socket)p Fp(,)g(45)1478 5221 y(OS)f(string,)f(44)1478
5421 y Fl(os-name)p Fp(,)h(111)1478 5621 y Fl(os-node-name)p
Fp(,)h(111)1478 5822 y Fl(os-release-name)p Fp(,)h(111)1478
6022 y Fl(os-string->byte-vector)p Fp(,)h(45)1478 6222
y Fl(os-string->string)p Fp(,)f(45)1478 6423 y Fo(os-string-thing)16
b Fp(,)56 b(44)1478 6623 y Fl(os-version-name)p Fp(,)i(111)1478
7007 y Fl(p)p Fp(,)d(32)1478 7208 y Fl(partition-list)p
Fp(,)j(31)1478 7408 y Fl(partition-list!)p Fp(,)g(31)1478
7608 y Fl(placeholder-set!)p Fp(,)g(84,)e(88)1478 7809
y Fl(placeholder-value)p Fp(,)i(84,)e(88)1478 8009 y
Fl(placeholder-value-rv)p Fp(,)j(88)1478 8209 y Fl(placeholder?)p
Fp(,)e(84,)f(87)1478 8410 y Fl(port->fd)p Fp(,)h(117)1478
8610 y Fl(port-is-a-terminal?)p Fp(,)i(118)1478 8810
y Fl(port-terminal-name)p Fp(,)f(118)1478 9011 y Fl(port-text-codec)p
Fp(,)g(74)1478 9211 y Fl(prefix)p Fp(,)e(20)1478 9411
y Fl(pretty-print)p Fp(,)h(32)1478 9612 y Fl(primary-category?)p
Fp(,)h(72)1478 9812 y Fl(process-id->integer)p Fp(,)h(106)1478
10012 y Fl(process-id-exit-status)p Fp(,)g(106)4425 1046
y Fl(process-id-terminating-signal)p Fp(,)46 b(106)4425
1246 y Fl(process-id=?)p Fp(,)58 b(106)4425 1446 y Fl(process-id?)p
Fp(,)f(106)4425 1646 y Fl(provisional-byte-vector-ref)p
Fp(,)j(81)4425 1847 y Fl(provisional-byte-vector-set!)p
Fp(,)g(81)4425 2047 y Fl(provisional-car)p Fp(,)e(80)4425
2247 y Fl(provisional-cdr)p Fp(,)g(80)4425 2447 y Fl
(provisional-cell-ref)p Fp(,)h(80)4425 2647 y Fl(provisional-cell-set!)
p Fp(,)g(80)4425 2847 y Fl(provisional-set-car!)p Fp(,)g(80)4425
3047 y Fl(provisional-set-cdr!)p Fp(,)g(80)4425 3247
y Fl(provisional-string-ref)p Fp(,)g(81)4425 3448 y Fl
(provisional-string-set!)p Fp(,)h(81)4425 3648 y Fl
(provisional-vector-ref)p Fp(,)f(80)4425 3848 y Fl
(provisional-vector-set!)p Fp(,)h(80)4425 4228 y Fl(queue->list)p
Fp(,)d(33)4425 4429 y Fl(queue-empty?)p Fp(,)h(33)4425
4629 y Fl(queue-length)p Fp(,)g(33)4425 4829 y Fl(queue?)p
Fp(,)f(33)4425 5210 y Fl(range)p Fp(,)f(64)4425 5410
y Fl(ranges)p Fp(,)h(64)4425 5610 y Fl(read-directory-stream)p
Fp(,)i(112)4425 5810 y Fl(receive)p Fp(,)e(87)4425 6010
y Fl(receive-rv)p Fp(,)g(87)4425 6210 y Fl(record)p Fp(,)g(36)4425
6410 y Fl(record-accessor)p Fp(,)h(37)4425 6610 y Fl
(record-constructor)p Fp(,)h(37)4425 6810 y Fl(record-length)p
Fp(,)f(37)4425 7011 y Fl(record-modifier)p Fp(,)g(37)4425
7211 y Fl(record-predicate)p Fp(,)g(37)4425 7411 y Fl(record-ref)p
Fp(,)f(37)4425 7611 y Fl(record-set!)p Fp(,)g(37)4425
7811 y Fl(record-type)p Fp(,)g(37)4425 8011 y Fl
(record-type-field-names)p Fp(,)j(37)4425 8211 y Fl(record-type-name)p
Fp(,)e(37)4425 8411 y Fl(record-type?)p Fp(,)g(37)4425
8612 y Fl(record?)p Fp(,)f(36)4425 8812 y Fl(regexp-match)p
Fp(,)h(119)4425 9012 y Fl(regexp?)p Fp(,)f(64,)e(119)4425
9212 y Fl(release-lock)p Fp(,)j(84)4425 9412 y Fl(relinquish-timeslice)
p Fp(,)h(78)4425 9612 y Fl(reload-dynamic-externals)p
Fp(,)h(95)4425 9812 y Fl(remap-file-descriptors)p Fp(,)f(117)4425
10012 y Fl(remove-directory)p Fp(,)f(114)4218 10511 y(126)p
eop end
%%Page: 127 135
TeXDict begin 127 134 bop 581 1046 a Fl(remove-duplicates)p
Fp(,)59 b(31)581 1246 y Fl(remove-signal-queue-signal!)p
Fp(,)h(109)581 1446 y Fl(rename)p Fp(,)d(114)581 1646
y Fl(repeat)p Fp(,)g(65)581 1845 y Fl(reverse!)p Fp(,)g(31)581
2220 y Fl(scalar-value->char)p Fp(,)i(70)581 2420 y Fl(scalar-value?)p
Fp(,)f(70)581 2620 y Fl(select)p Fp(,)f(86)581 2820 y
Fl(send)p Fp(,)f(87)581 3020 y Fl(send-rv)p Fp(,)h(87)581
3219 y Fl(sequence)p Fp(,)g(65)581 3419 y Fl(set)p Fp(,)f(64)581
3619 y Fl(set-close-on-exec?!)p Fp(,)j(118)581 3819 y
Fl(set-condvar-has-value?!)p Fp(,)h(83)581 4019 y Fl
(set-condvar-value!)p Fp(,)f(83)581 4219 y Fl(set-current-proposal!)p
Fp(,)g(82)581 4418 y Fl(set-file-creation-mask!)p Fp(,)h(113)581
4618 y Fl(set-group-id!)p Fp(,)e(110)581 4818 y Fl(set-i/o-flags!)p
Fp(,)g(118)581 5018 y Fl(set-port-text-codec!)p Fp(,)h(74)581
5218 y Fl(set-port-text-codec-according-to-bom!)p Fp(,)1245
5417 y(74)581 5617 y Fl(set-user-id!)p Fp(,)f(110)581
5816 y Fl(set-working-directory!)p Fp(,)h(112)581 6016
y Fl(shared-binding-is-import?)p Fp(,)h(93)581 6216 y
Fl(shared-binding-name)p Fp(,)f(93)581 6416 y Fl(shared-binding-ref)p
Fp(,)g(93)581 6616 y Fl(shared-binding-set!)p Fp(,)g(93)581
6816 y Fl(shared-binding?)p Fp(,)f(93)581 7015 y Fl(signal-name)p
Fp(,)g(107)581 7215 y Fl(signal-os-number)p Fp(,)g(107)581
7415 y Fl(signal-process)p Fp(,)g(109)581 7615 y Fl
(signal-queue-monitored-signals)p Fp(,)46 b(109)581 7815
y Fl(signal-queue?)p Fp(,)58 b(109)581 8014 y Fl(signal=?)p
Fp(,)f(107)581 8214 y Fl(signal?)p Fp(,)g(107)581 8414
y Fl(sleep)p Fp(,)f(78)581 8614 y Fl(socket-accept)p
Fp(,)i(45)581 8814 y Fl(socket-client)p Fp(,)g(46)581
9013 y Fl(socket-port-number)p Fp(,)h(45)581 9213 y Fl
(sparse-vector->list)p Fp(,)g(33)581 9413 y Fl(sparse-vector-ref)p
Fp(,)g(33)581 9613 y Fl(sparse-vector-set!)p Fp(,)g(33)581
9813 y Fl(spawn)p Fp(,)d(78)581 10012 y Fl(string->os-string)p
Fp(,)j(44)3528 1046 y Fl(string-downcase)p Fp(,)f(73)3528
1246 y Fl(string-end)p Fp(,)g(65)3528 1446 y Fl(string-foldcase)p
Fp(,)g(73)3528 1646 y Fl(string-hash)p Fp(,)g(42)3528
1847 y Fl(string-output-port-output)p Fp(,)i(42)3528
2047 y Fl(string-start)p Fp(,)e(65)3528 2247 y Fl(string-titlecase)p
Fp(,)h(73)3528 2447 y Fl(string-upcase)p Fp(,)f(73)3528
2647 y Fl(submatch)p Fp(,)f(66)3528 2847 y Fl(subset)p
Fp(,)g(20)3528 3047 y Fl(subtract)p Fp(,)g(64)3528 3247
y Fl(sync)p Fp(,)g(86)3528 3448 y Fl(system)p Fp(,)g(45)3528
3828 y Fl(table-ref)p Fp(,)g(41)3528 4028 y Fl(table-set!)p
Fp(,)h(41)3528 4228 y Fl(table-walk)p Fp(,)g(41)3528
4429 y Fl(table?)p Fp(,)f(41)3528 4629 y Fl(terminate-current-thread)p
Fp(,)j(78)3528 4829 y Fl(terminate-thread!)p Fp(,)f(79)3528
5029 y Fl(text)p Fp(,)e(65)3528 5229 y(text)d(co)5 b(dec,)55
b(74)3528 5429 y Fl(text-codec-decode-char-proc)p Fp(,)61
b(75)3528 5629 y Fl(text-codec-encode-char-proc)p Fp(,)g(75)3528
5829 y Fl(text-codec-names)p Fp(,)e(75)3528 6030 y Fl(text-codec?)p
Fp(,)f(74)3528 6230 y Fl(thread-name)p Fp(,)g(79)3528
6430 y Fl(thread-queue-empty?)p Fp(,)h(85)3528 6630 y
Fl(thread-uid)p Fp(,)f(79)3528 6830 y Fl(thread?)p Fp(,)f(78)3528
7030 y Fl(time->string)p Fp(,)h(117)3528 7230 y Fl(time-seconds)p
Fp(,)g(116)3528 7430 y Fl(time<=?)p Fp(,)f(117)3528 7631
y Fl(time<?)p Fp(,)g(117)3528 7831 y Fl(time=?)p Fp(,)g(116)3528
8031 y Fl(time>=?)p Fp(,)g(117)3528 8231 y Fl(time>?)p
Fp(,)g(117)3528 8431 y Fl(time?)p Fp(,)g(116)3528 8812
y Fl(undefine-exported-binding)p Fp(,)j(93)3528 9012
y Fl(undefine-imported-binding)p Fp(,)g(93)3528 9212
y Fl(union)p Fp(,)d(64)3528 9412 y Fl(unlink)p Fp(,)g(114)3528
9612 y Fl(unload-dynamic-externals)p Fp(,)j(95)3528 9812
y Fl(us-ascii-codec)p Fp(,)e(74)3528 10012 y Fl(use-case)p
Fp(,)f(65)3321 10511 y(127)p eop end
%%Page: 128 136
TeXDict begin 128 135 bop 1478 1046 a Fl(user-id->integer)p
Fp(,)58 b(110)1478 1245 y Fl(user-id->user-info)p Fp(,)g(111)1478
1445 y Fl(user-id=?)p Fp(,)f(110)1478 1644 y Fl(user-id?)p
Fp(,)g(110)1478 1843 y Fl(user-info-group)p Fp(,)h(111)1478
2042 y Fl(user-info-home-directory)p Fp(,)h(111)1478
2242 y Fl(user-info-id)p Fp(,)e(111)1478 2441 y Fl(user-info-name)p
Fp(,)h(111)1478 2640 y Fl(user-info-shell)p Fp(,)g(111)1478
2839 y Fl(user-info?)p Fp(,)f(111)1478 3039 y Fl(utf-16be-codec)p
Fp(,)h(74)1478 3238 y Fl(utf-16le-codec)p Fp(,)g(74)1478
3437 y Fl(utf-32be-codec)p Fp(,)g(74)1478 3636 y Fl(utf-32le-codec)p
Fp(,)g(74)1478 3836 y Fl(utf-8-codec)p Fp(,)f(74)1478
4201 y Fl(vector-binary-search)p Fp(,)i(62)1478 4400
y Fl(vector-binary-search3)p Fp(,)g(62)1478 4599 y Fl
(vector-delete-neighbor-dups)p Fp(,)45 b(57,)c(61)1478
4799 y Fl(vector-heap-sort)p Fp(,)58 b(60)1478 4998 y
Fl(vector-heap-sort!)p Fp(,)g(60)1478 5197 y Fl(vector-insert-sort)p
Fp(,)g(60)1478 5396 y Fl(vector-insert-sort!)p Fp(,)h(60)1478
5596 y Fl(vector-merge)p Fp(,)e(57,)f(59)1478 5795 y
Fl(vector-merge!)p Fp(,)i(57,)d(60)1478 5994 y Fl(vector-merge-sort)p
Fp(,)j(59)1478 6193 y Fl(vector-merge-sort!)p Fp(,)g(59)1478
6393 y Fl(vector-sort)p Fp(,)f(57)1478 6592 y Fl(vector-sort!)p
Fp(,)g(57)1478 6791 y Fl(vector-sorted?)p Fp(,)h(57,)d(59)1478
6990 y Fl(vector-stable-sort)p Fp(,)j(57)1478 7190 y
Fl(vector-stable-sort!)p Fp(,)h(57)1478 7555 y Fl
(wait-for-child-process)p Fp(,)g(106)1478 7754 y Fl(with-nack)p
Fp(,)e(86)1478 7954 y Fl(working-directory)p Fp(,)h(112)1478
8153 y Fl(wrap)p Fp(,)e(86)1478 8518 y Fl(x->os-string)p
Fp(,)h(44)4218 10511 y(128)p eop end
%%Trailer

userdict /end-hook known{end-hook}if
%%EOF
